Angularjs - 当确认对话框为假时如何取消下拉更改事件? [英] Angularjs - How to cancel change event on dropdown when the confirm dialog is false?

查看:27
本文介绍了Angularjs - 当确认对话框为假时如何取消下拉更改事件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Angularjs.我的问题是当我在下拉列表中选择一个新选项时,会出现一个对话框.如果对话框的结果为 false,则选择的下拉选项必须相同.将分析从其他开发人员那里获得的想法.提前谢谢!

I am using Angularjs. My problem is when I select a new option in my dropdown, a dialog will appear. If the result of the dialog is false, the selected dropdown option must be the same. Getting ideas from other devs will be analyzed. Thank you in advance!

请参阅下面的代码片段:

Refer to my code snippet below:

<div ng-app="myApp" ng-controller="myCtrl">
  <select ng-model="myDropDown" ng-change="Dialog()">
    <option>a</option>
    <option>b</option>
  </select>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.Dialog = function () {
        var dialog = confirm('Continue?');
        if(!dialog) {
    	    alert("Option must not change");
            /** The problem is the dropdown still select the option. **/
        }
    }
});
</script>

推荐答案

这里有一个你可能不知道的技巧:

Here is a trick you may not know:

ng-change="dialog(myDropDown)"         // pass the NEW value of myDropDown
ng-change="dialog('{{myDropDown}}')"   // pass the OLD value of myDropDown

当调用 dialog() 时,您可以将之前选择的选项作为参数传递.

When calling dialog(), you can pass as a param the previous selected option.

然后,如果对话框被取消,只需回滚它.

Then, just rollback it if the dialog is cancelled.

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope) {
    $scope.dialog = function(prev) {
        var dialog = confirm('Continue?');
        if(!dialog) {
            $scope.myDropDown = prev;
            alert("Option must not change");
        }
    }
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
  <select ng-model="myDropDown" ng-change="dialog('{{myDropDown}}')">
    <option>a</option>
    <option>b</option>
  </select>
</div>

这篇关于Angularjs - 当确认对话框为假时如何取消下拉更改事件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆