Я хочу вернуть значение тега select , которое находится внутри ng-repeat после отмены диалогового окна подтверждения.
Вот что у меня есть:
Соответствующий HTML :
<table>
<tbody>
<tr ng-repeat="application in rows">
<td>
<select
ng-model="application.selectedVersion"
ng-options="apk.versionName for apk in application.versions | orderBy : 'id' : true"
ng-init="application.selectedVersion=application.versions.filter(currentVersion, application.apkUpdates)[0]"
ng-change="selectionChanged(application, '{{application.selectedVersion}}')"
style="padding:0 1em;" />
</td>
</tr>
</tbody>
</table>
Логика Javascript :
$scope.selectionChanged = function(application, previousVersion) {
var dialog = confirm('Change version?');
if (dialog) {
console.log('change version confirmed');
} else {
application.selectedVersion = previousVersion;
}
};
Передача '{{application.selectedVersion}}'
функции вместоapplication.selectedVersion
передает ранее выбранное значение вместо текущего (объяснение здесь: https://stackoverflow.com/a/45051464/2596580).
Когда я изменяю значение выбора, выполняю диалоговое взаимодействие и отменяю его, я пытаюсь восстановить значение, установив application.selectedVersion = angular.copy(previousVersion);
. Я вижу, что значение корректно при отладке javascript, но вместо действительного значения ввод выбора установлен пустым.
Что я делаю не так?
Демонстрация JSFiddle: https://jsfiddle.net/yt4ufsnh/