我的模板中有一个Ember.Select。这些选项是从我从服务器获取的内容中填充的。所有选项都很好。但是当我想显示所选值时,它会将属性设置为undefined。
模板:
{#with this as context}}
{{#each}}
<tr>
<td>{{name}}</td>
<td>{{view Ember.Select content=context.types optionValuePath='content.id' optionLabelPath='content.name' value=type}}</td>
</tr>
{{/each}}
{{/with}}
控制器:
types: function() {
return this.store.find('myType');
}.property()
模型I循环:
DS.Model.extend({
name: DS.attr(),
type: DS.attr() // <= this is the selected type (id)
});
MyType模型:
DS.Model.extend({
name: DS.attr()
});
此代码将呈现select元素中的所有选项。像这样:
<select>
<option value="1">My first type</option>
<option value="2">My second type</option>
</select>
以下我不明白的事情:
value=type
时,类型属性在检查数据时具有正确的值。答案 0 :(得分:2)
你有两个问题:
查看here了解修复程序。
希望有所帮助。
答案 1 :(得分:1)
在控制器中使用模型承诺是反模式。 Route的模型和afterModel挂钩等到Promise被解决并完成。因此,当您的控制器和模板呈现时,所有来自商店和json API的数据都将被正确下载和设置。
“Ember Way”解决方案是在当前Route的setupController挂钩中设置两个模型,因此您不必在模板中使用hack。
http://emberjs.jsbin.com/cugetoxoyira/44/edit
App.IndexRoute = Ember.Route.extend({
model: function() {
return Ember.RSVP.hash({
stuffs: this.store.find('stuff'),
types: this.store.find('type')
});
},
setupController: function(controller, model) {
controller.set('types', model.types);
controller.set('model', model.stuffs);
}
});