我正在试图找出一个模态是打开还是关闭。但我得到的错误无法读取打开的属性。我明白必须挂钩到$ modal.open并获得结果。我一直在使用这个question作为示例,但仍然得到错误。如果这个模态打开我的意图,那么我无法打开下一个提示。但如果模态已关闭,那么我有另一个模态提示打开。不知道如果只是看它很久但欢迎任何建议。谢谢
以下是另一个modal.js文件的模态代码:
function openSerialEntry($modal, $scope, item, onupdate) {
var modalInstance = $modal.open({
templateUrl: "sales/partials/serialNumberEntry.html",
size: "med",
backdrop: "static",
keyboard: false,
controller: serialNumberCtlr,
controllerAs: "vm",
resolve: {
item: function () { return item; },
onupdate: function () { return onupdate; },
}
});
modalInstance.result.then(function (result) {
onupdate(result);
}, function () {
});
}
这是我的控制器,只是试图设置一个变量:
$scope.modalOpen = false;
commonModals().openSerialEntry().opened.then(function () {
$scope.modalOpen = true;
});
错误:TypeError:无法读取未定义的属性“open” 在Object.openSerialEntry(modals.js:347)
答案 0 :(得分:1)
由于您未将$modal
传递给openSerialEntry
函数,因此undefined
会导致错误Cannot read property 'open' of undefined
}。我想您需要将$modal
注入控制器并将其传递给openSerialEntry
。此外,您还没有从openSerialEntry
函数返回任何内容,因此下一个错误将是Cannot read property 'then' of undefined
。
以下是修复这些问题的代码:
function openSerialEntry($modal, $scope, item, onupdate) {
var modalInstance = $modal.open({
templateUrl: "sales/partials/serialNumberEntry.html",
size: "med",
backdrop: "static",
keyboard: false,
controller: serialNumberCtlr,
controllerAs: "vm",
resolve: {
item: function () { return item; },
onupdate: function () { return onupdate; },
}
});
return modalInstance.result.then(function (result) {
onupdate(result);
}, function () {
});
}
yourcontrollerfunction.$inject = ['$modal'];
commonModals().openSerialEntry($modal, $scope, item, onupdate).then(function () {
$scope.modalOpen = true;
});
答案 1 :(得分:0)
您没有在应用模块中使用$ modal服务包含对模块的依赖。