尝试将资源响应用作所选项时的ngOptions奇怪行为

时间:2015-05-16 18:15:48

标签: javascript angularjs object angular-resource

我试着解决这个问题超过一个小时,没有在网上找到任何东西。 这是模板:

        <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>

2 个答案:

答案 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