从另一个指令访问指令的范围变量

时间:2015-01-25 19:57:55

标签: javascript angularjs angularjs-directive angularjs-scope

我已经创建了一个指令,它将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,我希望它是一个全局变量,这样我就不必在每个指令中创建该函数将来需要它。

2 个答案:

答案 0 :(得分:0)

在scope.watchScroll = pageYOffset之后添加范围。$ apply();这一切都很棒。

答案 1 :(得分:0)

是的。你必须调用$ scope。$ apply()。Apply函数用于更新(触发)某些操作中的范围(Jquery插件,一些jQuery函数,setTimeout等等。)。