javascript - 尝试使用资源响应作为所选项目时 ngOptions 的奇怪行为

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

这是 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/

相关文章:

javascript - 如何在 Angular js 中的 .run 方法内调用读取 json 文件的工厂?是否可能?

angularjs - 未捕获的语法错误 : Unexpected token < angular. 1-2-13.min.js:1

javascript - 在 NVD3 图表上添加引用线

javascript - 当应用程序处于后台时存储时间戳。 react native

javascript - 纠正 Controller 不添加空值的问题

javascript - 使用 Angularjs $Http.post 的 ASP.NET MVC 4 FormCollection 为空

python - Python 中哪些对象可以动态添加属性?

python - Python 中的替代构造函数

java - 如何在创建另一个项目符号对象时连续移动这些 'bullets'?

javascript - 正则表达式匹配域名