我在response.xpath
上有一个我定义的函数。
我稍后在控制器范围内的控制器中使用它 - 因为它从rootScope继承了该函数。
现在,我想在使用IsolatedScopes的指令中做同样的事情。 因为他们不是原型继承自rootScope,所以我需要找到另一种方法将该函数放在每个隔离的范围上。
有没有办法在创建或其他钩子上自定义隔离范围?
澄清:我需要范围的功能 - 而不是rootScope。
原因是我们使用了这个。$ on(' $ destroy' ...)。所以我们基本上都想在每次销毁我的作用域时执行代码。
当前实现:目前我覆盖rootScope
并检查,如果隔离,我只需在范围上添加该功能。然而,这感觉很hackish,我想找到一个更好的解决方案。
这是我当前的代码
$rootScope.$new
答案 0 :(得分:1)
啊......答案一直摆在我面前..因为这个问题错了!
我想要做的就是在每个范围(包括隔离)上分配函数。
嗯,范围有原型继承,然后只使用它!
var Scope = Object.getPrototypeOf($rootScope);
Scope.registerTask = function(){
....
this.$on("$destroy", function() {
...
});
};
Scope.unregisterTask = ...;
应该在负载的任何地方做魅力..
只是去展示 - 不要在压力下编写代码,你会更加努力工作并获得糟糕的结果.. :)
答案 1 :(得分:0)
我认为你可以将$rootScope
注入指令,作为
app.directive('testDirective', ['$rootScope', function($rootScope) {
return {
scope : {},
link : function() {
},
controller : ['$scope', function($scope) {
$rootScope.rootScopeFunc();
}]
}
}]);
这是一个DEMO