0
我在工廠中創建了一個全局變量。我已經訪問了我的控制器中的全局變量,但是在更改指令中的值時,它無法在控制器中更新。訪問控制器指令和工廠之間的數據
我的指令
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
以及如何在控制器中更新它。在該指令
scope.start = function() {
UserService.getProperties().var1=true;
}
myApp.factory('UserService', function() {
var properties = { var1: false };
return {
getProperties : function() { return properties; }
};
});
在當時及其控制器,你應該有:
我會做同樣的事情,但直接在我的工廠而不是函數返回屬性。綁定將在UserService.properties.var1等...仍然是一個很好的答案。 – Okazari
@RamanaUday除了這個很好的答案,你可以閱讀這篇文章http://stackoverflow.com/questions/30508773/ngrepeat-not-updating-after-model-changed/30510369#30510369解釋爲什麼它不工作變量而不是服務/工廠中的對象 – Okazari
在鏈接函數中注入工廠時也存在語法錯誤(不含'require')。它應該在這一行中引用'myApp.directive('quiz',function(quizFactory)' –