我的rootcope有一个共同的功能。我有多个控制器使用相同的功能。
我需要从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>
答案 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)
可以使用此关键字。
在JS中:
$rootScope.changeSFromRs = function(scope) {
scope.s = new Date();
};
在HTML中:
<button class="not-working" ng-click='changeSFromRs(this)'>Change Scope value from Rootscope</button>