gpt4 book ai didi

javascript - 在 ui-bootstrap modal dismiss 上调用模态中定义的函数

转载 作者:行者123 更新时间:2023-11-29 14:45:53 27 4
gpt4 key购买 nike

在我的 ui-bootstrap 模态 Controller 中,我 $watch 变量。它看起来像这样:

main.controller('modalCtrl', ['$scope', '$rootScope', '$modalInstance', 
function ($scope, $rootScope, $modalInstance) {

var unregister = $rootScope.$watch(function () { return $rootScope.someVariable; },
function (newVal) {
if (newVal == false) {
$scope.closeModal();
}

});
$scope.closeModal = function () {
unregister();
$modalInstance.dismiss('cancel');
};
}]);

当我关闭模态时,我想取消注册 $watch,当我在 HTML 中的 ng-click="closeModal()"上这样做时,它工作正常。但是,当我在 ESC 上单击模态外部时关闭模态时,它不起作用。那么有什么办法可以在解雇时调用我的取消注册功能。我知道 modal.result.then(close(),dismiss());但如果没有必要,我不想将该函数放入父级 $scope。

最佳答案

再添加一个回调到result promise unregister :

main.controller('modalCtrl', ['$scope', '$rootScope', '$modalInstance', function ($scope, $rootScope, $modalInstance) {

var unregister = $rootScope.$watch(function () {
return $rootScope.someVariable;
}, function (newVal) {
if (newVal == false) {
$scope.closeModal();
}
});

$scope.closeModal = function () {
$modalInstance.dismiss('cancel');
};

$modalInstance.result.then(null, unregister);
}]);

在这种情况下 unregister将同时调用 closeModal和退出键。顺便说一下,你可以去掉 $scope.closeModal一起使用ng-click="$dismiss('cancel')"在模板中。

关于javascript - 在 ui-bootstrap modal dismiss 上调用模态中定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com