簡體   English   中英

如何從Ember.Handlebars.helper訪問FIXTURES數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM