[英]Injecting an Angular factory into another factory
讓一家工廠注入另一家工廠有點麻煩。
錯誤是:
`ReferenceError: testDataService is not defined`
我認為這應該很容易解決,但這讓我頭疼。 我似乎對依賴項注入所涉及的各種語法有疑問。
在我的主要工廠中,我正在像這樣進行初始服務呼叫:
this.treeGridOptions = gadgetInitService.initTreeGridTEST();
目前很好。
但是,在下面,它在initTreeGridTEST
中initTreeGridTEST
這是我的testDataService工廠,它只返回一些硬編碼的選項:
(function () {
'use strict';
angular.module('rage').factory('testDataService', [testData ]);
function testData() {
var service = {
treegridData: treegridData
};
return service;
}
function treegridData() {
return {
"altrows": true,
"sortable": true,
"columnsResize": true,
"editable": true,
"showToolbar": false,
"width": "100%",
"height": 400,
"source": {}
};
}
})();
並嘗試在此處注入“ testDataService”:
(function () {
'use strict';
angular.module('rage').factory('gadgetInitService', ['testDataService', gridHierarchyService]);
function gridHierarchyService(testDataService) {
var service = {
initTreeGrid: initTreeGrid,
initColumnChart: initColumnChart,
initTreeGridTEST: initTreeGridTEST
}
return service;
}
function initTreeGridTEST() {
var myData = testDataService.treegridData();
return myData;
}
})();
感謝您的幫助,
短發
testDataService
只是函數gridHierarchyService
范圍內的一個變量,您正嘗試在定義該函數的函數外部訪問它。 只需將函數initTreeGridTEST
移動到工廠構造函數中,就可以了。
(function () {
'use strict';
angular.module('rage').factory('gadgetInitService',gridHierarchyService);
//Just used it instead of array notation, i prefer this since this is more readable
gridHierarchyService.$inject = ['testDataService'];
function gridHierarchyService(testDataService) {
//yeah keep service it in a variable incase you need to use service object for referring public functions as is. I am just returning it.
return {
initTreeGrid: _initTreeGrid,
initColumnChart: _initColumnChart,
initTreeGridTEST: _initTreeGridTEST
}
function _initTreeGridTEST() {
var myData = testDataService.treegridData();
return myData;
}
}
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.