我试着解决这个问题超过一个小时,没有在网上找到任何东西。 这是模板:
<select
ng-model="user.platform_id"
ng-options="platform.id as platform.title for platform in platforms"
id="platform_id" class="form-control">
</select>
这是控制器:
$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>
答案 0 :(得分:0)
这不是关于使用资源,编程选择ng-options的问题是ng-model值应该引用与ng-options中相同的对象。为了初始化选择,首先确保填充平台数组(查询可能是异步?),然后循环遍历它们,并将您选择的平台的id对象设置为用户的platform_id对象。
答案 1 :(得分:0)
尝试这样的事情。请angular
track
value
告诉您<select
ng-model="user.platform_id"
ng-options="platform.title for platform in platforms track by platform.id"
id="platform_id" class="form-control">
</select>
。{/ 1>
my.ini