в угловом 1,5 компонента Я показывающий материал mdDialog, который сам по себе имеет встроенный компонент:Закрытие Угловое 1.5 Материал 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()
(глобальный сервис!) И надеюсь, что это относится к диалоговому окну, с которым я работаю? (Это не очень хорошая модульность.)
О, я понял! Я пропустил это. Только то, что я искал. Спасибо! –
Очень странно: когда я использую '$ mdDialog.hide (диалог,« закончен »)', '.then (function (answer)' никогда не вызывается! Я установил точку останова и все, но он никогда не попадает в нее. продолжайте? –
На самом деле кажется, что '$ mdDialog.cancel (dialog)' разрешит обещание, но не '$ mdDialog.hide (dialog)'! Я могу получить '$ mdDialog.hide()' для разрешения диалога , но не '$ mdDialog.hide (dialog)'. Конечно, есть что-то, что я делаю неправильно. Любые идеи? –