我已经创建了一个指令,它将pageYOffset绑定到窗口滚动上的作用域变量,如下所示:
app.directive('scrollDirective',function(){
return {
restrict: 'E',
link: function(scope,elem,attrs){
angular.element(window).bind('scroll',function(){
scope.watchScroll = pageYOffset;
})
}
}
})
我正试图从另一个指令中访问watchScroll变量:
app.directive('anotherDirective',function(){
return {
restrict: 'A',
link: function(scope,elem,attrs){
scope.$watch(function(){return scope.watchScroll;},function(changes){
console.log(changes);
});
}
}
})
我做错了什么,或者从一个指令到另一个指令无法访问范围变量吗?
我有一个单独的scrollDirective的原因是我将在应用程序中使用pageYOffset,我希望它是一个全局变量,这样我就不必在每个指令中创建该函数将来需要它。
答案 0 :(得分:0)
在scope.watchScroll = pageYOffset之后添加范围。$ apply();这一切都很棒。
答案 1 :(得分:0)
是的。你必须调用$ scope。$ apply()。Apply函数用于更新(触发)某些操作中的范围(Jquery插件,一些jQuery函数,setTimeout等等。)。