如何在AngularJS Material Design中使用对话框弹出窗口返回Promise?

5
我正在阅读 Material Design 中 mdDialog 的详细信息,但不明白为什么警报弹出窗口会返回一个 promise。 有人能通过一个例子来解释一下 mdDialog 如何返回一个 promise 吗? Material Design mdDialog 的文档如下: $mdDialog 打开一个对话框,以向用户提供关键信息或要求他们做出决策。有两种设置方法:一个简单的 promise API 和常规对象语法。
2个回答

6
它返回一个承诺(promise),因为您可能希望以不同的方式响应未来事件,如“关闭”(解决承诺)和“取消”(拒绝承诺)。
正如文档中所述,mdDialod.show() 返回一个 promise,因此您可以通过 $mdDialog 服务上的 closecancel 方法来解决或拒绝它。 这里有一个简单的示例,如您所请求的那样(打开控制台查看它如何记录每个事件的适当文本)。

在你提供的例子中,返回的是什么 Promise? - Sunil
$mdDialog.show()。注意它被调用后紧接着的 then。你应该阅读关于 Angular 团队实现的 Promise 的文档:https://docs.angularjs.org/api/ng/service/$q - Roy Miloh

5

我觉得文档有点含糊,但是我找到了解决方法。

在 baseController 中:

$mdDialog.show({/*modalOptions*/})
  .then(function(data) {
    console.log(data);
  }, function(err) {
    console.error(err);
  }).finally(function() {
    // finally block is optional for cleanup
  });

在模态控制器中。
$scope.cancel = function () {
  $mdDialog.cancel('user pressed canceled');
};

$scope.ok = function () {
  $mdDialog.hide({message: 'here is some result data'});
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接