[英]Angular: Not able to access variables in controller using service
我正在嘗試在控制器和功能之間共享變量。 但是我從控制器收到一個錯誤,說:
TypeError: Cannot read property 'getSet' of undefined
我已經看過許多教程,但是不知道我要去哪里錯了。 我的服務代碼是這樣的:
app.service('shareData', function() {
var selected = ["plz", "print", "something"];
var putSet = function(set) {
selected = set;
};
var getSet = function() {
return selected;
};
return {
putSet: putSet,
getSet: getSet
};
});
我可以從如下定義的函數中進行selected
:
setDisplay = function($scope, $mdDialog, shareData) {
console.log(shareData.getSet()); // this is working
$scope.selected = shareData.getSet();
$scope.hide = function() {
$mdDialog.hide();
};
$scope.cancel = function() {
$mdDialog.cancel();
};
$scope.answer = function(answer) {
$mdDialog.hide(answer);
};
};
我的控制器是這樣的:
app.controller('topicController', ['$scope', '$http', '$mdDialog', 'shareData',
function ($scope, $http, $mdDialog, $mdToast, shareData) {
console.log(shareData.getSet()); // NOT WORKING
}]);
你有額外的$mdToast
在topicController
控制器的工廠函數,你需要將其刪除。
它不起作用的原因是,當前您在數組中提到了4個依賴項,例如['$scope', '$http', '$mdDialog', 'shareData', function
,然后在函數內使用它的實例到DI數組。 在該函數內部,實際上有5個依賴項,其中$mdToast
額外。 因此,在后台發生的事情是函數$scope
持有一個值'$scope'
scope'DI數組,就像您從右到左一樣。 但是,當涉及到$mdToast
(在控制器功能中)時,它持有的值是DI數組的'shareData'
值,然后下一個參數shareData
將什么也沒有得到。
app.controller('topicController', ['$scope', '$http', '$mdDialog', 'shareData',
function ($scope, $http, $mdDialog, shareData) { //<--removed $mdToast
console.log(shareData.getSet());
}
]);
注意:您正在使用DI內聯數組批注 ,因此將依存關系按順序插入數組的順序應相同,然后應按順序插入基礎工廠函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.