Ember无法保留下拉值
我正在使用Ember 2.5.0。在我的应用程序中,我使用ember-select-list插件创建了一个包含下拉列表的页面。Ember无法保留下拉值
我可以呈现下拉菜单,但无法保留下拉列表的值。每当我选择的价值,我得到的铬控制台以下异常:
断言失败:不能叫有“身份证”得到一个未定义的对象上
请找到下面的代码,参考:
模板:
{{select-list content=roles
optionValuePath="role"
optionLabelPath="role"
value=role
action=(action (mut role))}}
个Route.js
export default Ember.Route.extend({
model(){
return Ember.RSVP.hash({
books : this.store.findAll("book"),
roles : this.store.findAll("role")
});
},
setupController(controller,model){
controller.set('users',model.books);
controller.set('roles',model.roles);
}
});
模型
export default DS.Model.extend({
role:DS.attr()
});
在路由器,当我通过Array(roles: this.store.findAll("role").toArray())
代替model
,我可以保留值,但同时使模型它引发错误。
任何人,你能帮我解决这个问题吗?
的ember-select-list documentation和unit test表明了array
需要在{{select-list}}
帮手content
财产。
这就是为什么Ember.RSVP.hash
似乎失败,因为hash
预期,并返回一个object
,这是烬选名单未配置为使用类型。
而不是hash
,你应该使用Ember.RSVP.all
,作为all
预期,并返回一个array
,这应该工作。
我创建了一个Ember Twiddle example来演示。
如果你不想使用烬,选择列表中,你可能会发现它更容易使用仅仅以Ember's each
helper构建自己的选择列表,像这样:
<select onchange={{action "selectRole" value="target.value"}}>
{{#each roles as |role| }}
<option value="{{ role }}" label={{ role }}>
{{ role }}
</option>
{{/each}}
</select>
我会建议你使用ember-power-select加上。
你的问题,你可以试试这个,
setupController(controller,model){
controller.set('users',model.books);
controller.set('roles',model.roles.toArray());
}
让我知道这是行不通的
通过添加'then'将不再是一个PromiseArray,它将无法工作。 – locks
删除然后部分和简化到阵列在setupcontroller – kumkanillam
但是这里面RSVP.hash我有一个2Models是书模型,另一个是我的角色只需要角色是一个数组而不是book.Also还有其他简单的方法来构建一个选择下拉式我不知道为什么ember对于基本的HTML表单元素来说非常困难。 – VelNaga
您可以很容易地添加“书籍”。我已经用注释更新了Twiddle示例。另外,我已经更新了答案,以包含一个本地的Ember方法来使用'each'助手构建一个'
如果使用后一种方法,您可以继续使用'Ember.RSVP.hash'。 – jacefarm