无法在控制器中识别工厂或服务

时间:2015-04-09 15:29:37

标签: javascript angularjs single-page-application

尝试在我的其他控制器中识别此工厂,以便我可以将结果对象注入其中。

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

function SampleService() {
this.result = [];
}
});

这是我的控制器中的代码,删除了一些不是问题的目的。

myApp.controller('125Zero', ['$scope','ngAudio', function($scope, ngAudio, SampleService){ 

    $scope.buttonPressed= function() {
   var tempObj = {};
       tempObj.title = $scope.title;
       tempObj.frequency = $scope.frequency; 
console.log(tempObj);

        SampleService.result.push($scope.tempObj);
} 
}]);

我一直收到TypeError:无法读取属性'结果'未定义的。

我明白这可能是我错过的傻事。

3 个答案:

答案 0 :(得分:1)

myApp.controller('125Zero', ['$scope','ngAudio', function($scope, ngAudio, SampleService){ 

你没有在依赖项的数组符号中注入SampleService

myApp.controller('125Zero', ['$scope','ngAudio', 'resultService', function($scope, ngAudio, resultService){ 

您还需要从factory返回一个对象。目前你还没有退货。

答案 1 :(得分:1)

你需要做这样的事情:

myApp.factory('SampleService', function() {
    return {
        result: []
    }
});

答案 2 :(得分:1)

也许你感到困惑

这是您的服务

myApp.factory('resultService', function(){
    this.result = [];
    return this;
});

你可以这样使用它

myApp.controller('125Zero', ['$scope','ngAudio', 'resultService', function($scope, ngAudio, SampleService, resultService){ 
    $scope.buttonPressed= function() {
        var tempObj = {};
       tempObj.title = $scope.title;
       tempObj.frequency = $scope.frequency; 
       console.log(tempObj);

       resultService.result.push($scope.tempObj);
    } 
}]);