javascript - Angularjs-ड्रॉपडाउन पर परिवर्तन ईवेंट को रद्द करने का तरीका कब पुष्टि संवाद गलत है?



dialog html-select (1)

मैं Angularjs का उपयोग कर रहा हूँ मेरी समस्या तब होती है जब मैं अपने ड्रॉपडाउन में एक नया विकल्प चुनता हूं, एक संवाद दिखाई देगा। यदि संवाद का परिणाम झूठा है, तो चयनित ड्रॉपडाउन विकल्प एक जैसा होना चाहिए। अन्य देवों के विचारों का विश्लेषण किया जाएगा आपका अग्रिम में ही बहुत धन्यवाद!

नीचे मेरे कोड स्निपेट को देखें:

<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>


यहां एक ऐसी चाल है जो आपको नहीं पता है:

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

dialog() , आप पिछले चयनित विकल्प परम के रूप में पारित कर सकते हैं।

फिर, बस रोलबैक करें अगर संवाद रद्द हो जाता है।

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>





html-select