【发布时间】:2016-12-08 19:21:26
【问题描述】:
在一个 Angular 1.5 组件中,我展示了一个 Material mdDialog,它本身有一个嵌入式组件:
$mdDialog.show({
controller: function($scope, $log) {
$scope.notify=function() {
$log.debug("need to cancel");
$mdDialog.hide();
}
},
template: "<md-dialog aria-label='Add Foobar'><new-foobar-panel on-cancel='notify()'></new-foobar-panel></md-dialog>",
targetEvent: ev,
clickOutsideToClose: true,
fullscreen: true
});
当嵌入式组件调用onCancel() 回调时,对话框的控制器使用$mdDialog.hide() 关闭对话框。
但这似乎有点乱。 $mdDialog 的文档说它将关闭最后打开的对话框,但这似乎有点懒惰和一厢情愿。我敢肯定,在某些情况下,许多组件和对话框会导致此操作失败。毕竟我在对话框的控制器中 --- 不应该有对可以用来直接关闭它的对话框实例的引用吗?
我试过了:
var dialog = $mdDialog.show({
controller: function($scope, $log) {
$scope.notify=function() {
$log.debug("need to cancel");
dialog.hide();
}
但这不起作用;也许返回的是一个承诺而不是一个对话框。
所以我是否坚持致电$mdDialog.hide()(全球服务!!)并希望这指的是我正在使用的对话框? (这不是很好的模块化。)
【问题讨论】:
标签: angularjs angular-material