我的代码是这样的

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);

最佳答案

showMessageModal函数仅在messageModalService函数中定义。您没有返回它,所以没有人可以访问它。

实际上,您什么也不返回,因此工厂在调用undefined时会产生它。

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

    return {showMessageModal: showMessageModal};
}


或者,您也可以执行以下操作:

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

关于javascript - 在angularJS中向 Controller 注入(inject)服务失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27597990/

10-09 15:52