2014-09-18 70 views
4

angular-ui $modal支持窗口關閉或使用modalInstance.result.then(closeFn,dismissFn)解僱的承諾。

所以,如果我用一個模式來收集新產品信息,那麼我就可以這樣做:

 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,做new Item(item).$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(); 
         }); 
        }; 

      } 
     }); 

但是,有沒有更多的事先捕捉關閉事件的標準方式?

回答

1

angular-ui的$close實際上是一個標準的角延遲對象。您無法捕捉正在進行的$ close事件,所以實際上您的第二個desicion是正確的。使用重新提交按鈕

+0

謝謝。很遺憾標準行爲不能處理通常的用例。啊,那麼,對於Ang2或Web組件來說。 – deitch 2015-04-20 05:19:47

相關問題