Skip to content

Commit

Permalink
refactor(*): Added ons._waitDirectiveInit() on angular module and cha…
Browse files Browse the repository at this point in the history
…nge to use this on every components that require waiting for angular directive initialization.
  • Loading branch information
anatoo committed Oct 1, 2015
1 parent 976b92f commit 72503f9
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 66 deletions.
2 changes: 1 addition & 1 deletion core/elements/ons-navigator.es6
Expand Up @@ -593,7 +593,7 @@ limitations under the License.
* @param {Function} Animator
*/
window.OnsNavigatorElement.registerAnimator = function(name, Animator) {
if (!(Animator.prototype instanceof NavigatorTransitionAnimator)) {
if (!(Animater.prototype instanceof NavigatorTransitionAnimator)) {
throw new Error('"Animator" param must inherit NavigatorTransitionAnimator');
}

Expand Down
32 changes: 10 additions & 22 deletions framework/directives/navigator.js
Expand Up @@ -464,30 +464,18 @@
(function() {
'use strict';

angular.module('onsen').directive('onsNavigator', function(NavigatorView, $onsen) {
var lastReady = window.OnsNavigatorElement.rewritables.ready;
window.OnsNavigatorElement.rewritables.ready = ons._waitDiretiveInit('ons-navigator', lastReady);

var lastReady = window.OnsNavigatorElement.rewritables.ready;
// wait for AngularJS binding initilization.
window.OnsNavigatorElement.rewritables.ready = function(element, callback) {
if (angular.element(element).data('ons-navigator')) {
lastReady(element, callback);
} else {
var listen = function() {
lastReady(element, callback);
element.removeEventListener('ons-navigator:init', listen, false);
};
element.addEventListener('ons-navigator:init', listen, false);
}
};

var lastLink = window.OnsNavigatorElement.rewritables.link;
window.OnsNavigatorElement.rewritables.link = function(navigatorElement, target, callback) {
var view = angular.element(navigatorElement).data('ons-navigator');
view._compileAndLink(target, function(target) {
lastLink(navigatorElement, target, callback);
});
};
var lastLink = window.OnsNavigatorElement.rewritables.link;
window.OnsNavigatorElement.rewritables.link = function(navigatorElement, target, callback) {
var view = angular.element(navigatorElement).data('ons-navigator');
view._compileAndLink(target, function(target) {
lastLink(navigatorElement, target, callback);
});
};

angular.module('onsen').directive('onsNavigator', function(NavigatorView, $onsen) {
return {
restrict: 'E',

Expand Down
12 changes: 1 addition & 11 deletions framework/directives/splitterContent.js
Expand Up @@ -54,17 +54,7 @@
'use strict';

var lastReady = window.OnsSplitterContentElement.rewritables.ready;
window.OnsSplitterContentElement.rewritables.ready = function(element, callback) {
if (angular.element(element).data('ons-splitter-content')) {
lastReady(element, callback);
} else {
var listen = function() {
lastReady(element, callback);
element.removeEventListener('ons-splitter-content:init', listen, false);
};
element.addEventListener('ons-splitter-content:init', listen, false);
}
};
window.OnsSplitterContentElement.rewritables.ready = ons._waitDiretiveInit('ons-splitter-content', lastReady);

var lastLink = window.OnsSplitterContentElement.rewritables.link;
window.OnsSplitterContentElement.rewritables.link = function(element, target, callback) {
Expand Down
12 changes: 1 addition & 11 deletions framework/directives/splitterSide.js
Expand Up @@ -296,17 +296,7 @@
'use strict';

var lastReady = window.OnsSplitterSideElement.rewritables.ready;
window.OnsSplitterSideElement.rewritables.ready = function(element, callback) {
if (angular.element(element).data('ons-splitter-side')) {
lastReady(element, callback);
} else {
var listen = function() {
lastReady(element, callback);
element.removeEventListener('ons-splitter-side:init', listen, false);
};
element.addEventListener('ons-splitter-side:init', listen, false);
}
};
window.OnsSplitterSideElement.rewritables.ready = ons._waitDiretiveInit('ons-splitter-side', lastReady);

var lastLink = window.OnsSplitterSideElement.rewritables.link;
window.OnsSplitterSideElement.rewritables.link = function(element, target, callback) {
Expand Down
31 changes: 10 additions & 21 deletions framework/directives/tabBar.js
Expand Up @@ -334,29 +334,18 @@
(function() {
'use strict';

angular.module('onsen').directive('onsTabbar', function($onsen, $compile, $parse, TabbarView) {
var lastReady = window.OnsTabbarElement.rewritables.ready;
window.OnsTabbarElement.rewritables.ready = ons._waitDiretiveInit('ons-tabbar', lastReady);

var lastReady = window.OnsTabbarElement.rewritables.ready;
// wait for AngularJS binding initilization.
window.OnsTabbarElement.rewritables.ready = function(element, callback) {
if (angular.element(element).data('ons-tabbar')) {
lastReady(element, callback);
} else {
var listen = function() {
lastReady(element, callback);
element.removeEventListener('ons-tabbar:init', listen, false);
};
element.addEventListener('ons-tabbar:init', listen, false);
}
};
var lastLink = window.OnsTabbarElement.rewritables.link;
window.OnsTabbarElement.rewritables.link = function(tabbarElement, element, callback) {
var view = angular.element(tabbarElement).data('ons-tabbar');
view._compileAndLink(element, function(element) {
lastLink(tabbarElement, element, callback);
});
};

var lastLink = window.OnsTabbarElement.rewritables.link;
window.OnsTabbarElement.rewritables.link = function(tabbarElement, element, callback) {
var view = angular.element(tabbarElement).data('ons-tabbar');
view._compileAndLink(element, function(element) {
lastLink(tabbarElement, element, callback);
});
};
angular.module('onsen').directive('onsTabbar', function($onsen, $compile, $parse, TabbarView) {

return {
restrict: 'E',
Expand Down
19 changes: 19 additions & 0 deletions framework/js/onsen.js
Expand Up @@ -394,6 +394,25 @@ limitations under the License.
return this._onsenService;
};

/**
* @param {String} elementName
* @param {Function} lastReady
* @return {Function}
*/
ons._waitDiretiveInit = function(elementName, lastReady) {
return function(element, callback) {
if (angular.element(element).data(elementName)) {
lastReady(element, callback);
} else {
var listen = function() {
lastReady(element, callback);
element.removeEventListener(elementName + ':init', listen, false);
};
element.addEventListener(elementName + ':init', listen, false);
}
};
};

/**
* @param {String} page
* @param {Object} [options]
Expand Down

0 comments on commit 72503f9

Please sign in to comment.