angular-ui $modal支持使用modalInstance.result.then(closeFn,dismissFn)关闭或解除窗口的promise.
因此,如果我使用模态收集新项目的信息,那么我可以这样做:
modalInstance.result.then(function (item) { new Item(item).$save(); // or similar },function () { });
和HTML代码段:
<button class="btn btn-primary" ng-click="$close(item)">Save</button> <button class="btn btn-warning" ng-click="$dismiss()">Cancel</button>
但是新项目可能存在冲突,或者在服务器端可能无效,或许多其他事情.在模态本身关闭之前,有什么办法可以解决这个问题吗?我想抓住“是”(或“关闭”)点击,运行我的fn做新项目(项目).$save(),然后:
我知道我可以在按钮上使用不同的ng-click,并在$modal控制器中捕获它,如下所示:
<button class="btn btn-primary" ng-click="save(item)">Save</button>
和代码:
var modalInstance = $modal.open({ templateUrl: '/partials/createItem.html',controller: function ($scope) { $scope.save = function(item) { new Item(item).$save().then(function(){ modalInstance.close(); }); }; } });
但是有没有更多标准的方法来预先捕捉近距离事件?
解决方法
angular-ui的$close实际上是一个标准的角度延迟对象.你无法捕捉正在进行的$close事件,所以实际上你的第二个决定是正确的.使用提交按钮的重新保护