2014-10-09 70 views
5

财产“getSpec”我开始与AngularJS和我试图从一个控制器使用出厂时有一些问题。AngularJS - 工厂 - 类型错误:无法读取的不确定

我有以下的工厂

angular.module('testingApp') 
    .factory('factoryService', function ($http) { 
    // Service logic 
    var getSpec = function(p) { 
     return $http.get('http://someurl//?p=' + p); 
    }; 
    return { 
     getSpec: getSpec 
    }; 
    }); 

,然后我尝试如下

angular.module('testingApp') 
    .controller('ServiceincientsCtrl',[ function (factoryService,$scope) { 
    console.log('Starting Service Incident Controller'); 
    factoryService.getSpec('AAA').then(function(response){ 
     $scope.result = response.data; 
    }, function(error){ 
     console.log('opsssss' + error); 
    }); 

    }]); 

从控制器消耗,但是当我尝试运行它,我收到以下消息

TypeError: Cannot read property 'getSpec' of undefined 

我不知道我缺少什么,这应该是一个newbbie错误,我GOOGLE了它和我试图米任何具有相同结果的例子。

任何想法我做错了什么?

谢谢!

回答

11

看起来你没有正确使用依赖性数组表示法。请参考下面的代码。请将'factoryService'&'$scope'添加为数组项。

.controller('ServiceincientsCtrl', ['factoryService', '$scope', function(factoryService, $scope) { 
    console.log('Starting Service Incident Controller'); 
    factoryService.getSpec('AAA').then(function(response) { 
     $scope.result = response.data; 
    }, function(error) { 
     console.log('opsssss' + error); 
    }); 

}]); 

关于dependancy injection的角度文档。

+0

谢谢!它真的有帮助! – federom 2014-10-09 17:12:47

3

首先,您没有正确声明您的控制器。它应该是这样的:

.controller('ServiceincientsCtrl',['$scope', 'factoryService', function($scope, factoryService) { 

我个人使用Service S作为我发现他们更具可读性。

这是你的工厂是什么样子的Service

myApp.service('factoryService', function ($http) { 

    this.getSpec = function(p) { 
     return $http.get('http://someurl//?p=' + p); 
    } 

}); 

这将与当前的控制器工作。

+0

谢谢!它真的有帮助! – federom 2014-10-09 17:13:08

相关问题