javascript - 从 ui bootstrap modal 控制器调用函数
问题描述
我有一个使用自己的新控制器打开的模态,我想从模态控制器调用一个函数,但该函数是在父控制器中定义的。
我将这个函数定义为从 $rootScope 调用,这是从模态中的父级调用函数的最佳方式还是将来有意义?
例子:
FormModule.controller("formCtrl", function ($scope, $http, $uibModal, $log, $rootScope) {
$rootScope.ShowReport = function ShowReport() {
//function Edit
$scope.edit = function () {
var ObjResolve = function () {
return obj;
}
var modalInstance= $uibModal.open({
animation: true,
templateUrl: 'Modal.html',
controller: 'ModalInstanceCtrl',
resolve: {
ObjResolve
}
}).result.catch(function (res) {
if (!(res === 'cancel' || res === 'escape key press')) {
//throw res;
}
});
};
});
FormModule.controller("ModalInstanceCtrl", function ($scope, $uibModal, $uibModalInstance, $http, ObjResolve, $rootScope ) {
//save Event
$scope.save = function () {
$rootScope.ShowReport();
}
});
解决方案
您可以使用 modalInstance 回调,当 modal 关闭时调用
$scope.edit = function () {
var ObjResolve = function () {
return obj;
}
var modalInstance= $uibModal.open({
animation: true,
templateUrl: 'Modal.html',
controller: 'ModalInstanceCtrl',
resolve: {
ObjResolve
}
}).result.catch(function (res) {
if (!(res === 'cancel' || res === 'escape key press')) {//throw res;}
});
modalInstance.result.then(function(){
ShowReport() //call function when modal is closed
})
};
模态控制器
FormModule.controller("ModalInstanceCtrl", function ($scope, $uibModal, $uibModalInstance, $http, ObjResolve, $rootScope ) {
//save Event
$scope.save = function () {
$uibModalInstance.close();
}
})
推荐阅读
- python - gschemas.compiled 架构是特定的(我可以将它与我的 python 库一起提供)吗?
- php - 如何在 PHP 中的表单输入字段旁边显示单个错误消息?
- mysql - 选择确切用户之间的对话(按用户 ID)
- html - 图片没有出现在网站上。已检查资源管理器路径
- python - 并排打印值
- model - 如何使用强化学习模型 MDP Q-learning?
- ffmpeg - 在 ffmpeg 命令中使用 anullsrc
- android - 如何更新 baseAdapter 数据?
- bash - Bash找不到文件
- javascript - 使用带有过滤器的 React dangerouslySetInnerHTML 动态附加 SVG 内容在 Chrome 中不起作用