Angular 自定义服务中的未知提供商错误

Angular unknower provider error in custom service

这是我用于初始化应用程序和创建控制器的代码。

var app = angular.module('newstalk',[]);

app.controller("articleCtrl",['$scope','$http','dataService',function($scope,$http,dataService){

    $scope.articles = dataService.getArticles();
    $scope.commentForm = function(id,userid){
        console.log(userid);
        var uid = userid;
        var c =  this.contents;
        var data = {
            content: c,
            user: uid
        };
        console.log(data);
        $http.post('/api/article/'+id,data);
    };
}]);

现在,我还创建了一个服务来从服务器获取数据。这是相关代码:

(function(){

    angular.module('newstalk')
        .factory('dataService',dataService);

    function dataService(){
        return {
            getArticles : getArticles
        };

        function getAricles(){
            console.log("yolo");
            return $http({
                method:get,
                url:'/api/articles/0'
            })
            .then(sendResponse);
        }

        function sendResponse(response){
            console.log(data);
            return response.data;
        }
    }

})

这在一个单独的文件中。现在,当我 运行 这个时,我得到一个 Error: $injector:unpr Unknown Provider 错误。 我已经阅读了多个其他此类问题,none 其中有帮助。有什么想法吗?

我认为你没有正确使用 IIFE。

你应该把 () 放在文件的末尾。

(function(){

angular.module('newstalk')
    .factory('dataService',dataService);

function dataService(){
    return {
        getArticles : getArticles
    };

    function getAricles(){
        console.log("yolo");
        return $http({
            method:get,
            url:'/api/articles/0'
        })
        .then(sendResponse);
    }

    function sendResponse(response){
        console.log(data);
        return response.data;
    }
}

})()

放置() execute/run函数。现在你没有执行 IIFE。