[英]How to access FIXTURES data from the Ember.Handlebars.helper?
這是我創建余燼夾具的方式:
window.App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter;
App.Category = DS.Model.extend({
name: DS.attr(),
parent_id: DS.attr()
});
App.Category.FIXTURES = [
{
id: 1,
name: 'user1',
email: 'user1@gmail.com',
parent_id: 0
},
{
id: 2,
name: 'user2',
email: 'user2@gmail.com',
parent_id: 1
}
];
這是我的余燼視圖的一部分,其中“ parent-title”是一個助手:
{{#each category in controller}}
<tr>
<td>{{category.name}}</td>
<td>{{parent-title category.parent_id}}</td>
<td>Edit/Delete</td>
</tr>
{{/each}}
我想要的是在列出過程中,如果parent_id為0,則應打印“ master”,否則顯示父類別的名稱。 在我的實例中,user2的父級是id = 1,表明它應該打印'user1'。 以下是我使用過的助手:
Ember.Handlebars.helper('parent-title', function(parent_id){
if (parent_id > 0) {
var parent = category.findBy('id', parent_id);
return parent.name;
} else {
return 'master';
}
});
我知道是否將行App.Category.FIXTURES = [
替換為var Category = [
我可以完成,但我想使用FIXTURE來完成。
我可以告訴你,訪問這樣的數據是一個壞主意。 如果我是你,我會將parent_id
更改為關系,而不是屬性(因為這就是事實)。 然后,您可以使用category.parent.name
在模板中訪問父級的名稱。 建立關系也可以給您帶來其他一些奢侈品。
但是,如果要保持向后兼容性,請嘗試使用計算屬性。
App.Category = DS.Model.extend({
name: DS.attr(),
parent_id: DS.attr(),
parent: function() {
return DS.PromiseObject.create({
promise: this.get('store').find('category', this.get('parent_id'))
});
}.property('parent_id'),
parent_name: function() {
return this.get('parent.name');
}.property('parent.name')
});
編輯:如果您想將其更改為一種關系(我認為應該如此),這很簡單。 取而代之的DS.attr
,您使用DS.belongsTo
。 為實例。
App.Categor = DS.Model.extend({
name: DS.attr(),
// I dropped the _id part because it's no longer an ID
parent: DS.belongsTo('category', { inverse: null })
});
這告訴Ember-Data將您在parent
字段中提供的ID解釋為另一個category
對象。 因此, category.get('parent')
將返回另一個category
對象,而不是數字。 但就您而言,要使其正常工作,您必須將所有0
ID都轉換為null
ID。 我不確定這是否可行,這就是為什么我推薦計算屬性的原因。
編輯:為了顯示master
在一個null父的情況下,使用把手if
表達。
{{#if parent}}
{{parent.name}}
{{else}}
master
{{/if}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.