我的代码是这样的
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/