[英]Using factory in factory in angularjs
我有一個角度應用程序,它從不同的API讀取一些數據,並且編寫了多個工廠來捕獲它們,每個工廠都應使用參數來檢索工廠提供的數據。 像這樣的東西:
var eqDetail = angular.module('eqDetail', []);
eqDetail.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
}]);
eqDetail.factory('eqInfoFactory', function($location, $http) {
return {
eqInfo: getEqInfo()
}
function getEqInfo() {
//routines for acquiring data and sanitize data
});
return tmp // and object contaning sanitized data
}
});
eqDetail.factory('lastInspectionDetail', ['eqInfoFactory', function($http,
eqInfoFactory) {
return {
insInfo: getInsInfo()
}
function getInsInfo() {
var eq = eqInfoFactory.eqInfo;
// get second set of data base on 'eq'
return tmp
}
}]);
eqDetail.controller('eqInfo', function($scope, eqInfoFactory) {
$scope.eq = {};
$scope.eq = eqInfoFactory.eqInfo;
console.log($scope.eq);
});
eqDetail.controller('inspectionResult', function($scope, lastInspectionDetail) {
$scope.insResult = lastInspectionDetail.insInfo;
console.log($scope.insResult)
})
問題是第二個工廠中的eqInfoFactory.eqInfo
出現為undefined
。
我是否以正確的方式使用工廠? 以及如何將它們彼此注入?
Angular的依賴項注入需要,如果它與數組符號一起使用(至少出於最小化安全考慮,它肯定應該使用),則每個依賴項-因此您缺少Angular的$http
服務:
//should be ['$http', 'eqInfoFactory', fn(x)...]
eqDetail.factory('lastInspectionDetail', ['eqInfoFactory', function($http,
eqInfoFactory) {
return {
insInfo: getInsInfo()
}
function getInsInfo() {
var eq = eqInfoFactory.eqInfo;
// get second set of data base on 'eq'
return tmp
}
}]);
您需要通過在縮小列表中添加$ http來修復此行:
eqDetail.factory('lastInspectionDetail', ['eqInfoFactory', function($http,eqInfoFactory) {
更改為此行:
eqDetail.factory('lastInspectionDetail', ['$http','eqInfoFactory', function($http,eqInfoFactory) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.