簡體   English   中英

在使用帶有Angular的SweetAlert2時,如何保持范圍?

[英]How do you keep the scope when using SweetAlert2 with Angular?

當我嘗試以角度方式將SweetAlert2添加到我的刪除按鈕時,它會阻止范圍更新模型。 它們可以一起使用嗎?

此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警報一樣正常的功能:

還有那個

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;

        }

      }
    }
  };
}

因為函數稍后執行(它是一個承諾),您可能需要提供model變量作為注入參數。

.then函數中,嘗試將model變量注入其中,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM