Angularjs Rootscope函数中的角度变化范围变量-如何实现?

Angularjs Rootscope函数中的角度变化范围变量-如何实现?,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我的rootscope中有一个通用函数。我有多个控制器使用相同的功能 我需要更改Rootscope函数中的Scope变量 在JS中 angular.module('myApp', []) .run(function($rootScope) { $rootScope.rs = new Date(); $rootScope.changeRsFromRs = function() { $rootScope.rs = new Date(); }; //Not Working $root

我的rootscope中有一个通用函数。我有多个控制器使用相同的功能

我需要更改Rootscope函数中的Scope变量

在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>
从根范围更改范围值

这可能是不可能的,因为您的$rootScope没有任何范围的引用,也没有“打算”这样做

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

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

干杯。

为什么不调用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();
            }
        };
    });

查看更新的

可以使用此关键字

在JS中:

$rootScope.changeSFromRs = function(scope) {
  scope.s = new Date();
};
在HTML中:

<button class="not-working" ng-click='changeSFromRs(this)'>Change Scope value from Rootscope</button> 
从根范围更改范围值

为什么您认为这应该是可能的$changeSFromRs函数中未定义范围。这是不可能的,因为当您返回根范围时,上下文范围未定义。对于服务内部的解决方案,使用angular services+1可能可以实现您想要实现的目标。。。如果可能,应始终避免使用rootscopeyes。你是对的。最好使用服务。但对于张贴的问题,请参阅我的答案