角度服务不是函数错误

时间:2016-03-18 14:49:32

标签: angularjs function service factory

app.service('situacao', function($log, $q, $http, $rootScope){
var situacao = this; 
situacao.lista = {};
situacao.getAllSituacao = function(){
    var defer = $q.defer();
    console.log("php/getAll.php");
    $http.get($rootScope.endPoint + "php/getAll.php")
        .success(function(res) {
        console.log(res);
        situacao.lista = res;
        defer.resolve(res);
    }).error(function(err, status){
        defer.reject(err);
    }); 
    return defer.promise;
};
return situacao;});
app.controller('listCtrl',['$scope', '$uibModal', '$log', '$http', function(situacao, $scope, $modal, $log, $http) {   
$scope.init = function(){
    $scope.getAll();
}
$scope.getAll = function(){        
    situacao.getAllSituacao().then(function(res){
        //sucess
        $scope.dispSituacao = situacao.lista;  
    }, function(err){
        //error
    })
};
$scope.init(); }]);

我正在尝试使用“服务”,但会导致错误: situacao.getAllSituacao不是一个函数。 Nãainconsigo utilizar o service semper mostra a mensagem de erroquenãoéumamação

出了什么问题?

2 个答案:

答案 0 :(得分:9)

您必须更新您的注入以将其传入,因为您正在使用数组表示法:

更改

app.controller('listCtrl', ['$scope', '$uibModal', '$log', '$http', function (situacao, $scope, $modal, $log, $http)

app.controller('listCtrl', ['situacao', '$scope', '$uibModal', '$log', '$http', function (situacao, $scope, $modal, $log, $http) {

答案 1 :(得分:3)

在我的情况下,我正确地命名了所有注入的服务,但是,它们的顺序不一样,它给了我同样的错误。我的代码是这样的:

app.controller('listCtrl', ['situacao', '$scope', '$uibModal', '$log', '$http', function ($scope, situacao, $modal, $log, $http) {}

按正确顺序排列可以解决问题。像这样:

app.controller('listCtrl', ['situacao', '$scope', '$uibModal', '$log', '$http', function (situacao, $scope, $modal, $log, $http) {}

希望这有助于某人。