Rootscope函数的角度变化范围变量 - 如何做到这一点?

时间:2014-02-05 07:44:28

标签: angularjs angularjs-scope

我的rootcope有一个共同的功能。我有多个控制器使用相同的功能。

我需要从Rootscope函数更改Scope变量。

http://jsfiddle.net/qkZHG/

在JS中

angular.module('myApp', [])
 .run(function($rootScope) {
$rootScope.rs = new Date();

 $rootScope.changeRsFromRs = function() {
  $rootScope.rs = new Date();
};

 //Not Working
 $rootScope.changeSFromRs = function() {
  $scope.s = new Date();
};
})
.controller('myCtrl', function($scope, $rootScope) {
   $scope.s = new Date();

  $scope.changeSFromS = function() {
    $scope.s = new Date();
};

$scope.changeRsFromS = function() {
    $rootScope.rs = new Date();
};
});

在Html中,

<button class="not-working" ng-click='changeSFromRs()'>Change Scope value from Rootscope</button>

3 个答案:

答案 0 :(得分:3)

这可能是不可能的,因为你的$ rootScope没有任何范围的引用,也不是“意味着”这样做。

如果有帮助,您可以将$ rootscope注入控制器并绑定到它。

app.controller('sampleCtrl', function($scope, $rootScope){
    $scope.var = $rootScope.var2;
});

干杯。

答案 1 :(得分:2)

为什么不直接调用rootScope函数?

var myApp = angular.module('myApp', []);

myApp.run(function($rootScope) {
    $rootScope.rs = new Date();
    $rootScope.updateDate = function() {
       $rootScope.rs = new Date();
    };
});

myApp.controller('myCtrl', ['$scope', function($scope){
}]);

如果你为此提供服务,这会更好。

myApp.service('DateService', function() {
        return {
            getDate: function() {
                return new Date();
            }
        };
    });

查看更新后的fiddle

答案 2 :(得分:1)

可以使用此关键字。

http://jsfiddle.net/qkZHG/3/

在JS中:

$rootScope.changeSFromRs = function(scope) {
  scope.s = new Date();
};

在HTML中:

<button class="not-working" ng-click='changeSFromRs(this)'>Change Scope value from Rootscope</button>