【问题标题】:Access Angular Factory through Injection通过注入访问 Angular 工厂
【发布时间】:2014-04-24 21:12:32
【问题描述】:

我无法访问我的 Angular 工厂中的方法?我收到“TypeError:Object # has no method 'method1'”错误。我的 Angular 应用看起来像这样......

myApp.js

var myApp = angular.module('myAngApp', [])

myApp.config(function ($routeProvider, $httpProvider) {

$routeProvider
    .when('/list',
      {
        controller: 'ListController',
        templateUrl: 'partials/list.html'
      })
     .when('/reports/:reportId',
      {
        controller: 'DetailController',
        templateUrl: 'partials/report.html'
     })
})

factory.js

myApp.factory('factory1', function(){

    var factory = {}; 

    factory.method1 = function() {
            console.log('method1');
        }

    factory.method2 = function() {
            console.log('method2');
        }

    return factory;

});

ListController.js

function ListController($scope, $location, $http, $route, $rootScope, factory1) {
  factory1.method1();
}

ListController.$inject = ['$scope', '$location', '$http', '$route', '$rootScope', 'factory1'];

【问题讨论】:

  • 您是否尝试过为此使用 myApp.controller 语法?
  • 不确定您的意思?
  • 可能是我错误地访问了工厂或者我没有正确声明工厂?因为错误是... TypeError: Object # has no method 'method1'
  • 工厂声明正确

标签: angularjs controller code-injection factory route-provider


【解决方案1】:

试试这个...

myApp.controller('ListController', [
  '$scope',
  '$location',
  '$http',
  '$route',
  '$rootScope',
  'factory1',
  function ($scope, $location, $http, $route, $rootScope, factory1) {
    factory1.method1();
  }]);

而不是您当前的函数 ListController 和 $inject 语句

jsfiddle http://jsfiddle.net/NuCZz/

【讨论】:

  • 使用这种语法,如何将 ListController 添加到 .config() .when('/list', { controller: 'ListController' templateUrl: 'partials/list.html' })
  • 它已注册并会查找它 - 现在正在处理小提琴。
  • 这太棒了!谢谢。我应用了您的语法并产生了一个错误,表明我的 DetailController 文件中有第二个 ListController.$inject 语句,它应该是 DetailController.$inject 您的语法有效,我的原始语法也有效。
  • 不客气。听起来像是复制和粘贴错误:)
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多