向angularJS注入服务到控制器失败

时间:2014-12-22 07:03:47

标签: javascript angularjs

我的代码就像这样

Controller.js
var errorMessage = { MessageHeader: "Error", Message: "Something went wrong. Please try again later." };
    angular.module('RateRequestApp.controllers', []).controller('ReadOnlyController', [
    '$scope',  'updateTruckNoService', 'messageModalService', '$modal',
    function ($scope,  updateTruckNoService, messageModalService, $modal) {

        messageModalService.showMessageModal(errorMessage);
    }
]);
Services.js
angular.module('RateRequestApp.services').factory('messageModalService', [ '$modal', messageModalService]);
function messageModalService($modal) {
    function showMessageModal(response) {
        var modalInstance = $modal.open({
            templateUrl: 'MessageModal.html',
            controller: 'ModalInstanceCtrl',
            resolve: {
                items: function () {
                    return response;
                }
            }
        });
    };
}

App.JS
angular.module('RateRequestApp', [
   'RateRequestApp.services',
   'RateRequestApp.controllers',
   'ui.bootstrap',
   'angular-loading-bar'
]);

一切看起来都没问题,但这会引发错误

  

TypeError:无法读取属性' showMessageModal'未定义的

在第

  messageModalService.showMessageModal(errorMessage);

2 个答案:

答案 0 :(得分:2)

showMessageModal功能只在您的messageModalService功能中定义。你没有归还它,所以没有人可以访问它。

事实上,你没有返回任何东西,因此你的工厂在调用它时会产生undefined

function messageModalService($modal) {
    function showMessageModal(response) {
        // ...
    }

    return {showMessageModal: showMessageModal};
}

或者您也可以这样做:

function messageModalService($modal) {
    return {
        showMessageModal: function (response) {
            // ...
        }
    };
}

答案 1 :(得分:1)

您的服务很简单" messageModalService"没有返回方法' showMessageModal',尝试返回表格下面的sampledModalService,它应该工作:)

return{
    showMessageModal: showMessageModal
};