Skip to content

Commit

Permalink
Ensure that a view’s onBeforeShow is triggered after the view render
Browse files Browse the repository at this point in the history
Resolves #14
  • Loading branch information
paulfalgout committed Aug 17, 2016
1 parent 917bb86 commit a6ca6ec
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/RegionShowEvent.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,22 @@ export default function() {

Marionette.Region.prototype.triggerMethod = function(name, region, view, options) {
var result;
if (name === 'before:show' || name === 'show') {
result = regionTriggerMethod.call(this, name, view, region, options);
if (!view._isShown) { Marionette.triggerMethodOn(view, name, view, region, options); }
if (name === 'show') {
view._isShown = true;
triggerOnChildren(view.children, name);
} else {

if (name === 'before:show') {
result = regionTriggerMethod.call(this, 'before:show', view, region, options);
if (!view._isShown) {
view.once('render', function() {
triggerOnChildren(view.children, name);
Marionette.triggerMethodOn(view, 'before:show', view, region, options);
});
}
view.once('render', function() {
triggerOnChildren(view.children, name);
});
} else if (name === 'show') {
result = regionTriggerMethod.call(this, 'show', view, region, options);
if (!view._isShown) { Marionette.triggerMethodOn(view, 'show', view, region, options); }
view._isShown = true;
triggerOnChildren(view.children, name);
} else {
result = regionTriggerMethod.apply(this, arguments);
}
Expand Down

0 comments on commit a6ca6ec

Please sign in to comment.