【发布时间】:2023-12-09 05:03:01
【问题描述】:
我想在取消确认对话框后恢复 ng-repeat 内的 select 标记值。
这是我目前所拥有的:
相关 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://*.com/a/45051464/2596580)。
当我更改选择值时,执行对话交互并取消它我尝试通过设置application.selectedVersion = angular.copy(previousVersion); 来恢复该值。我可以通过调试 javascript 看到该值是正确的,但选择输入设置为空白而不是实际值。
我做错了什么?
JSFiddle 演示:https://jsfiddle.net/yt4ufsnh/
【问题讨论】:
标签: javascript angularjs angularjs-ng-repeat angularjs-ng-model angularjs-ng-init