angular ui bootstrap: 承诺 resolved/rejected 当模式关闭时
angular ui bootstrap: promise resolved/rejected when modal closed
我正在研究 angular 和 bootstap,使用 angular-ui-bootstrap 桥接库。我想要实现的是重用 modal component 并将其包装在一个承诺中,当模式成功关闭(按下 OK
按钮时)或被拒绝(cancel
按钮时,该承诺将得到解决在模式外按下或单击)。
据我所知,桥库中有$modal
服务,它只有一种方法可用:open(options)
。还有built-in angular promise implementation:$q
。我正在寻找一种将两者结合起来的方法。
我想要一个自定义组件(服务、工厂?),它将提供一个 startFlow
方法,该方法会 return 一个承诺。调用 startFlow
也会打开 bootstrap 模式。当模态关闭(正面或负面)时,承诺将得到解决或拒绝。
有人可以提示如何实现吗?到目前为止我还没有设法找到现有的解决方案...
open
返回的对象上的 result
属性 是一个行为与您描述的完全相同的承诺。事实上,https://angular-ui.github.io/bootstrap/#/modal 文档中的示例使用了它:
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
可以看到在这个 Plunker 中工作 http://plnkr.co/edit/ro5Dnkg0p9wYWlMCRqlN?p=preview
我正在研究 angular 和 bootstap,使用 angular-ui-bootstrap 桥接库。我想要实现的是重用 modal component 并将其包装在一个承诺中,当模式成功关闭(按下 OK
按钮时)或被拒绝(cancel
按钮时,该承诺将得到解决在模式外按下或单击)。
据我所知,桥库中有$modal
服务,它只有一种方法可用:open(options)
。还有built-in angular promise implementation:$q
。我正在寻找一种将两者结合起来的方法。
我想要一个自定义组件(服务、工厂?),它将提供一个 startFlow
方法,该方法会 return 一个承诺。调用 startFlow
也会打开 bootstrap 模式。当模态关闭(正面或负面)时,承诺将得到解决或拒绝。
有人可以提示如何实现吗?到目前为止我还没有设法找到现有的解决方案...
open
返回的对象上的 result
属性 是一个行为与您描述的完全相同的承诺。事实上,https://angular-ui.github.io/bootstrap/#/modal 文档中的示例使用了它:
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
size: size,
resolve: {
items: function () {
return $scope.items;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
可以看到在这个 Plunker 中工作 http://plnkr.co/edit/ro5Dnkg0p9wYWlMCRqlN?p=preview