簡體   English   中英

在angularJS中向控制器注入服務失敗

[英]Injecting service to controller fails in 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);

showMessageModal函數僅在您的messageModalService函數中定義。 您沒有歸還它,所以沒有人可以訪問它。

實際上,您什么都不返回,因此工廠在調用時會產生undefined內容。

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

    return {showMessageModal: showMessageModal};
}

或者您也可以執行以下操作:

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

很簡單,您的服務“ messageModalService”不返回方法“ showMessageModal”,請嘗試從方法method messageModalService返回,如以下示例所示,它應該可以工作:)

return{
    showMessageModal: showMessageModal
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM