Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularjs的工厂中使用工厂_Javascript_Angularjs_Factory - Fatal编程技术网

Javascript 在angularjs的工厂中使用工厂

Javascript 在angularjs的工厂中使用工厂,javascript,angularjs,factory,Javascript,Angularjs,Factory,我有一个angular应用程序,它从不同的API读取一些数据,我编写了多个工厂来捕获这些数据。每个工厂都应该使用一个参数来检索工厂提供的数据。大概是这样的: var eqDetail = angular.module('eqDetail', []); eqDetail.config(['$locationProvider', function($locationProvider) { $locationProvider.html5Mode({ enabled: true, r

我有一个angular应用程序,它从不同的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)
})
问题是第二个工厂中的eqinfofFactory.eqInfo显示为未定义


我是否以正确的方式使用工厂?以及如何将它们相互注入?

Angular的依赖项注入需要,如果它与数组表示法一起使用,至少为了缩小安全性,它应该使用数组表示法,那么每个依赖项-因此您缺少Angular的$http服务:


您需要通过将$http添加到缩小列表来修复此行:

eqDetail.factory('lastInspectionDetail', ['eqInfoFactory', function($http,eqInfoFactory) {
更改为此行:

eqDetail.factory('lastInspectionDetail', ['$http','eqInfoFactory', function($http,eqInfoFactory) {

设备详情工厂“上次检查详情”,['$http','eqInfoFactory',函数$http,eqInfoFactory尝试以下答案:可能重复感谢,但eqInfoFactory.eqInfo现在是一个空对象,而不是另一个工厂的实际输出,该工厂在其控制器上运行良好。你知道为什么吗?工厂的定义顺序也很重要吗?
eqDetail.factory('lastInspectionDetail', ['$http','eqInfoFactory', function($http,eqInfoFactory) {