Here is a trick you don't know:
ng-change="dialog(myDropDown)" // pass the NEW value of myDropDown
ng-change="dialog('{{myDropDown}}')" // pass the OLD value of myDropDown
When called up, dialog()you can pass the previously selected option as a parameter.
Then just rollback if the dialog is canceled.
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>
Run code