2016-12-02 35 views
0

我正在使用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,我可以保留值,但同時使模型它引發錯誤。

任何人,你能幫我解決這個問題嗎?

回答

1

ember-select-list documentationunit 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> 
+0

但是這裏面RSVP.hash我有一個2Models是書模型,另一個是我的角色只需要角色是一個數組而不是book.Also還有其他簡單的方法來構建一個選擇下拉式我不知道爲什麼ember對於基本的HTML表單元素來說非常困難。 – VelNaga

+0

您可以很容易地添加「書籍」。我已經用註釋更新了Twiddle示例。另外,我已經更新了答案,以包含一個本地的Ember方法來使用'each'助手構建一個'