如何判断angularjs模态是否已打开

时间:2016-10-27 20:08:34

标签: javascript jquery angularjs twitter-bootstrap

我正在试图找出一个模态是打开还是关闭。但我得到的错误无法读取打开的属性。我明白必须挂钩到$ 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)

2 个答案:

答案 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服务包含对模块的依赖。