我在工厂创建了一个全局变量。我已经在我的控制器中访问了全局变量,但是在更改指令中的值时,它无法在控制器中更新。
我的指示是
myApp.directive('quiz', function(quizFactory) {
return {
restrict: 'AE',
scope: {},
templateUrl: 'templete.html',
controller: function($scope){
},
link: function(scope, elem, attrs,UserService) {
scope.start = function() {
UserService.var1=true;
}
}
};
我的工厂
myApp.factory('UserService', function() {
return {
var1 : false
};
});
我的控制器是
myApp.controller('LearnSetQue', ['$scope','UserService',
function($scope,UserService){
$scope.var2=UserService.var1;
$scope.var3=UserService.var1;
}
]);
这里的开始是按钮功能
<button ng-click="start()">Start</button>
在点击开始按钮时,var1应该变为真var1=true,var2=true and var3=true
,如何在控制器中更新它。
答案 0 :(得分:3)
首先在服务中,您应该返回一个对象,其中包含您要在应用中共享的属性:
myApp.factory('UserService', function() {
var properties = { var1: false };
return {
getProperties : function() { return properties; }
};
});
然后在指令
中scope.start = function() {
UserService.getProperties().var1=true;
}
在控制器中你应该:
myApp.controller('LearnSetQue', ['$scope','UserService',
function($scope,UserService){
$scope.properties = UserService.getProperties();
]);
然后在视图上,直接引用var1
<div>{{ properties.var1 }}</div>