我正在尝试使用HTML元素获得一个简单的belongsTo关系。
我的应用程序记录学生。每个学生都被分配到一个类别。
我有一个分类模型:
import DS from "ember-data";
export default DS.Model.extend({
code: DS.attr('string'),
description: DS.attr('string')
});还有一个学生模型--还有很多其他的东西--属于一个范畴。
import DS from "ember-data";
export default DS.Model.extend({
//...
category: DS.belongsTo('category', {async: true}),
//...
});我希望允许用户在模板中选择学生类别,因此我的路由将加载到一个类别对象列表中:
import Ember from "ember";
export default Ember.Route.extend({
model: function(params) {
return this.store.find('student', params.student_id);
},
setupController: function(controller, model) {
this._super(controller, model);
//...
controller.set('categories', this.store.find('category'));
//...
}
});我的模板包括以下内容(编辑:我使用"content.id"作为值路径,而不是最初所说的"content",但它似乎对问题没有影响):
<label>Category: </label>
{{view "select"
content=categories
optionValuePath="content.id"
optionLabelPath="content.description"
selection=category}},我的期望是,这将允许我从列表中选择一个项目,并且它将相应地更新我的模型类别。
实际发生的是列表工作,但如果我更改选择,则select元素变为空白。
生成的HTML如下所示:
<select id="ember955" class="ember-view ember-select">
<option id="ember1199" class="ember-view" value="16">Category A</option>
<option id="ember1202" class="ember-view" value="17">Category B</option>
<option id="ember1205" class="ember-view" value="18">Category C</option>
<option id="ember1208" class="ember-view" value="19">Category D</option>
<option id="ember1211" class="ember-view" value="20">Category E</option>
<option id="ember1214" class="ember-view" value="21">Category F</option>
<option id="ember1217" class="ember-view" value="22">Category G</option>
</select>我做对了吗?我错过了什么模式吗?
编辑:
我已经在吉斯宾中尽可能地复制了这一点,但是问题并没有发生。非常奇怪的是,select元素是正确填充的,它甚至似乎正确地更新了类别。唯一的问题是,如果我更改原来的选择,复选框将变为空白。
发布于 2015-04-16 19:45:51
我希望看到一个惟一的属性,如id,引用为optionValuePath而不是整个对象。
所以不是optionValuePath="content",而是optionValuePath="content.id"
<label>Category: </label>
{{view "select"
content=categories
optionValuePath="content.id"
optionLabelPath="content.description"
selection=category}}https://stackoverflow.com/questions/29681466
复制相似问题