1

当我尝试以角度将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;

        }

      }
    }
  };
}
4

1 回答 1

0

因为该函数稍后执行(这是一个承诺),您可能需要将model变量作为注入参数提供。

在您的.then函数中,尝试model像这样将变量注入其中:

.then(function(model) {
    console.log(model)
});
于 2016-11-22T00:25:52.967 回答