我尝试解决这个问题一个多小时,但在网上没有找到任何信息。 这是模板:
<select
ng-model="user.platform_id"
ng-options="platform.id as platform.title for platform in platforms"
id="platform_id" class="form-control">
</select>
这是 Controller :
$scope.platforms = platformsEntity.query();
// Resource object coming from UI Router resolve, already fetched with user info
$scope.user = userEntity;
平台资源响应返回以下格式:
[ { id: 4, title: 'platform1'}, { id: 5, title: 'platform2' ]
用户相同,资源对象带平台ID
{ id: 3, name: 'foo', platform_id: 5 }
这样我就可以在选择框中看到所有平台,但它不会被 ngModel 值 (user.platform_id) 选择 问题是,当我使用普通对象而不是资源时:
$scope.platforms = platformsEntity.query();
$scope.user = { platform_id: 5 } ;
它被正确选择...
更新
我复制了我在 ng-repeat 中寻找的行为:
<select ng-model="user.platform_id" id="platform_id" class="form-control">
<option
value="{{ platform.id }}"
ng-selected="user.platform_id == platform.id"
ng-repeat="platform in platforms"
>{{ platform.title }}</option>
</select>
最佳答案
这与使用资源无关,以编程方式选择 ng-options 的问题是 ng-model 值应该引用与 ng-options 中相同的对象。为了初始化选择,首先确保平台数组已填充(查询可能是异步的?),然后循环它们,并将您选择的平台的 id 对象设置为用户的 platform_id 对象。
关于javascript - 尝试使用资源响应作为所选项目时 ngOptions 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30279146/