2016-11-22 31 views
1

當我嘗試在角度上添加SweetAlert2到我的刪除按鈕時,它會阻止範圍更新模型。它們可以一起使用嗎?如何在使用SweetAlert2和Angular時保持範圍?

Shown here in this Plunker (請務必先添加一個項目,那麼您可以在該示例刪除)

代碼SweetAlert不工作(當我確認沒有任何反應):

function fieldToolsController($scope, ParticipantFactory) { 
    var model = this; 
    model.participant = ParticipantFactory; 
    model.participant.hasRoles = model.participant.roles.length > 0; 

    model.deleteSelectedRole = function() { 
    for (var i = 0; i < model.participant.roles.length; i++) { 
     if (model.participant.roles[i] === model.participant.selected) { 

     swal({ 
      title: 'Are you sure?', 
      text: "You won't be able to revert this!", 
      type: 'warning', 
      showCancelButton: true, 
      confirmButtonColor: '#3085d6', 
      cancelButtonColor: '#d33', 
      confirmButtonText: 'Yes, delete it!' 
     }).then(function() { 

      //============================= 
      //LOSES SCOPE HERE OR SOMETHING 
      //============================= 
      model.participant.roles.splice(i, 1); 
      model.participant.hasRoles = model.participant.roles.length > 0; 
      if (model.participant.hasRoles) { 
      model.participant.selected = model.participant.roles[0]; 
      } 
      return; 
      //============================= 
      //============================= 
      //============================= 

     }); 

     } 
    } 
    }; 
} 

下面是一個正常的JavaScript警告正常工作相同的功能:

And the plunker

function fieldToolsController($scope, ParticipantFactory) { 
    var model = this; 
    model.participant = ParticipantFactory; 
    model.participant.hasRoles = model.participant.roles.length > 0; 

    model.deleteSelectedRole = function() { 
    for (var i = 0; i < model.participant.roles.length; i++) { 
     if (model.participant.roles[i] === model.participant.selected) { 

     var c = confirm("Are you sure?"); 
     if(c){ 
      model.participant.roles.splice(i, 1); 
      model.participant.hasRoles = model.participant.roles.length > 0; 
      if (model.participant.hasRoles) { 
      model.participant.selected = model.participant.roles[0]; 
      } 
      return; 

     } 

     } 
    } 
    }; 
} 

回答

0

因爲函數稍後會執行(這是一個承諾),所以您可能需要提供model變量作爲注入參數。

在你.then功能,嘗試model變量注入這樣的:

.then(function(model) { 
    console.log(model) 
}); 
+0

呀 - 我肯定試過了。我希望它也會那麼簡單。發生此錯誤:'app.js:26未捕獲(承諾中)TypeError:無法讀取未定義的屬性'角色' – RichC

相關問題