2017-09-15 79 views
0

我有一個模型,values.js灰燼不能迭代模型數組屬性

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    values: [ 
     { name: "Quality", isChecked: DS.attr('bool') }, 
     { name: "Inspiration", isChecked: DS.attr('bool') }, 
     { name: "Creativity", isChecked: DS.attr('bool') }, 
     { name: "Commitment", isChecked: DS.attr('bool') }, 
     { name: "Honour", isChecked: DS.attr('bool') } 
    ] 
}); 

,在該路由passport-values.js我創建一個值模型:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return this.store.createRecord('values'); 
    } 
}); 

我有一個分量,passport-basic.hbs

<h2>{{title}}</h2> 
<p>{{content}}</p> 
<form> 
    <fieldset class="checkboxes"> 
     {{#each model as |value index|}} 
      <label>{{input type="checkbox" onchange=(action "change") checked=value.isChecked name="value.name"}}{{value.name}}</label> 
     {{/each}} 
    </fieldset> 
</form> 

我正在使用我的模板passport-values.hbs,並通過我的模型:

{{passport-basic title="" content="" model=values}} 

在我試圖在模型陣列內遍歷所有的值,以顯示與表示器isChecked選項是否是真實的姓名和複選框標籤的組件/每個值爲false。我嘗試了許多其他來源的想法,但我似乎無法完成這項工作。

感謝您的幫助,我對Ember.js仍然很陌​​生,我想知道是否有我失蹤的東西?

回答

1

您可以按照順序遍歷集合在你所描述的方式,並充分利用Ember的內置的方式來堅持記錄Defining ModelsFinding Records在該指南中的例子。

你的價值模型應該是這樣的:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    quality: DS.attr('boolean'), 
    inspiration: DS.attr('boolean'), 
    honor: DS.attr('boolean'), 
    creativity: DS.attr('boolean'), 
    commitment: DS.attr('boolean') 
}); 

然後在你的路線,做

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
    return this.get('store').findAll('value'); 
    } 
}); 

您的模型鉤子將返回值的集合,它可以傳遞給多麼組件你描述:

{{passport-basic title="" content="" model=values}} 

並且你可以使用你的模板中的值屬性es像這樣:

{{#each model as |value|}} 
    <p>{{value.honor}}</p> 
{{/each}} 
+0

謝謝,我仍然在學習Ember.js,所以這些東西會及時到來。 :) – Oli

+0

祝你好運,歡迎來到Ember:D當你走的時候,這一切都變得更加簡單。 – handlebears

0

模型並不意味着包含數據,它們定義將JSON有效載荷轉換爲記錄的屬性。

屬性用於將從服務器返回的JSON有效負載轉換爲記錄以及在序列化記錄以在修改後將其保存回服務器時使用。 https://guides.emberjs.com/v2.15.0/models/defining-models/#toc_defining-attributes

如果您不需要保存數據或者您只是測試模板。您可以定義一個數組並將其作爲模型傳遞給您的路線。

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    values: [ 
     { name: "Quality", isChecked: false }, 
     { name: "Inspiration", isChecked: false }, 
     { name: "Creativity", isChecked: false }, 
     { name: "Commitment", isChecked: false }, 
     { name: "Honour", isChecked: false } 
    ], 
    model() { 
     return this.get('values'); 
    } 
}); 

編輯:作爲一個修正,技術上你可以創建記錄沒有數據庫,你就不能保存這種方式。

正確的語法是。

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    quality: DS.attr('boolean'), 
    inspiration: DS.attr('boolean'), 
    honor: DS.attr('boolean'), 
    creativity: DS.attr('boolean'), 
    commitment: DS.attr('boolean') 
}); 
+0

好吧,那麼如果我需要保存數據,我該怎麼做?我目前正在尋找在路線中創建一個Ember對象? – Oli

+0

我會說這超出了這個問題的範圍。但基本上,您需要了解如何將數據保存到數據庫並將其作爲JSON提供。 Ember可以暫時保存數據,但如果沒有某種服務器端的集成,它將無法長期保存。 @Oli – BrandonW