angularjs:从指令更​​新$rootScope变量

前端之家收集整理的这篇文章主要介绍了angularjs:从指令更​​新$rootScope变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从指令更新rootScope变量的角度方式是什么?
我无法理解范围在指令中的工作方式……

到目前为止,我只能更改范围级别的变量.

app.run(['$rootScope',function($rootScope) {
    $rootScope.foo = false;
}

app.directive('myDirective',[function(){
    return {
        restrict: 'A',link: function(scope,elem,attrs) {
            elem.bind('click',function() {
                scope.$parent.foo = true;
                scope.$parent.apply();
            });
        }
    }   
}]);

<!-- does not update foo -->
<p>{{ foo }}</p>

<!-- updates foo -->
<div my-directive><p>{{ foo }}</p></div>

解决方法

如果您需要在需要注入的任何地方访问$rootScope,它将可用:

app.directive('myDirective',['$rootScope',function($rootScope) {
    return {
        restrict: 'A',function() {
                $rootScope.foo = true;
                $rootScope.$apply();
            });
        }
    }   
}]);

还有一种更简单的方法,不需要注射.每个范围对象都可以通过$root引用访问最顶层的$rootScope.这意味着你也可以这样做:

scope.$root.foo = true;

猜你在找的Angularjs相关文章