TypeError:undefined不是functīon

时间:2015-03-27 16:49:12

标签: angularjs

我的控制器正在注入服务上调用方法,但该方法未定义。如果我console.log来自控制器内的服务,它会给出一个空对象。

这是控制器:

(function(){

    'use strict';

    angular
        .module('app.live')
        .controller('LiveController', LiveController);

        LiveController.$inject = ['Hubbub', '$scope'];

        function LiveController(Hubbub, $scope){

            $scope.loading = 1;

            activate();

            function activate() {

                return Hubbub.getDebates().success(function(data){

                    console.log(data);

                }).error(function(data){

                    console.log(data);

                });

            }

        }

})();

服务的定义如下:

(function(){

    'use strict';

    angular
        .module('app.api')
        .constant('API_BASE_URL', 'http://localhost/hubbub/public/api/')
        .service('Hubbub', Hubbub);

        Hubbub.$inject = ['$http', 'API_BASE_URL'];

        function Hubbub($http, API_BASE_URL){

            var service = {
                getDebates: getDebates
            };

            return service;


            /* ********************************
            *  Method: getDebates
            ******************************** */
            function getDebates() {

                var request = {
                    method: 'GET',
                    url:    API_BASE_URL + 'debates',
                    headers: {
                        'Content-Type':     'application/json',
                        'Accept':           'application/json'
                    }
                };

                return $http(request);

            }

        } // function Hubbub
})();

为什么不定义?

2 个答案:

答案 0 :(得分:1)

看起来您的模块依赖项未正确设置,请将app.api添加为依赖项。

angular.module('app.live',['app.api'])

答案 1 :(得分:0)

您有两个不同的角度模块。如果你想使用' Hubbub'在角度模块模块中提供服务(' app.live'),您需要将角度模块app.api声明为依赖项。

angular.module('app.live',['app.api']);