我有一个选择,我在哪里设置ng模型和选项列表。当我更新值时,它在范围内更新正常,但是当我尝试重新加载页面时,它不会以选择的正确值开始。
<select ng-change="updateSelectedNotification()"
ng-model="selectedNotification.notification_type"
ng-options="type.name for type in notificationTypes"
class="chosen-select"></select>
答案 0 :(得分:1)
问题是您没有将选择初始化为您设置的选项。幸运的角度为您提供了使用ng-init指令执行此操作的方法。
<select
ng-change="updateSelectedNotification()"
ng-model="selectedNotification.notification_type"
ng-options="type.value as type.name for type in notificationTypes track by $index"
ng-init="selectedNotification.notification_type = selected"
class="chosen-select">
</select>
$scope.selected = (your persisted value of type.value);
注意ng-options中的曲目。基本思想是使用ng-init将模型设置为ng-options中的一个值。您也可以始终将值设置为数组中的第一个项目,而不是像第一个选项那样使用空白。
ng-init="selectedNotification.notification_type = notificationTypes[0]"
确保在生成标记时匹配为每个选项标记分配的值。您可以使用ng-options为type.value作为type.name执行此操作。这会将value属性设置为type.value,将文本设置为type.name。因此,如果你有持久值,你可以在你的viewmodel中分配它,如上所示。