javascript - مرتبطة - عمل قائمة منسدلة ديناميكية



أنغولارجس-كيفية إلغاء تغيير الحدث على القائمة المنسدلة عندما يكون الحوار تأكيد خاطئ؟ (1)

أنا باستخدام أنغولارجس. مشكلتي هي عندما أختار خيارا جديدا في القائمة المنسدلة، سيظهر مربع حوار. إذا كانت نتيجة الحوار خاطئة، يجب أن يكون خيار القائمة المنسدلة المحدد هو نفسه. وسيتم تحليل الأفكار من ديفس أخرى. شكرا لكم مقدما!

ارجع إلى مقتطف الشفرة أدناه:

<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