2015-07-19 64 views
2

我正在構建訂購咖啡的應用程序。在其中一條路線上,我有商店菜單,其中有一系列具有類型,大小,價格屬性的飲料。舉例來說,12盎司摩卡可能需要5.00美元。EmberJS中的表結構化數據

我在構建這些數據和顯示它的時候遇到了困難,我在想,也許我並沒有用「餘燼的方式」來思考,因爲我是一般的新開發人員和前端開發人員。

在我的路線中,我嘗試了一些不同的事情。我有一個'商店飲料'的模型,返回商店的所有飲料。我嘗試過使用它作爲我的模型,並且能夠將模型中的所有商店飲料都返回,但由於沒有像{{if drink.type == 'Mocha'}}這樣的內置幫助程序,因此很難在格式中顯示所有飲料。

我試過的另一件事是使用Ember.RSVP.hash來分隔路線中的飲料,然後在我的模板中安裝Ember Truth Helpers來確定每個飲料的大小。

// routes/menu.js 
model: function() { 
    // get the drinks for the current store, for now hardcode 
    const storeId = 4; 

    return Ember.RSVP.hash({ 
    mochas: this.store.find(
     'store-drink', {'store':storeId, 'type':'Mocha'}), 
    espressos: this.store.find(
     'store-drink', {'store':storeId, 'type':'Espesso'}), 
    }) 
}, 
setupController: function(controller, model) { 
    controller.set('mochas', model.mochas); 
    controller.set('espressos', model.espressos); 
} 

//menu.hbs 
{{#each drink in mochas}} 
    {{if (eq drink.type 'Mocha')}} 
    <h2>mochas</h2> 
    {{drink.type}} 
    {{/if}} 
{{/each}} 

不僅會收到在控制器我的「摩卡」對象返回的所有飲料,但我似乎無法得到的安裝,如果幫手擦出火花。

有什麼建議嗎?也許我應該有一個完全不同的方法,或者我只是想念一些東西。

我在灰燼1.13

回答

1

我沒有使用過燼真理輔助,但在看文檔不是它應該是:

{{#each drink in mochas}} 
    {{#if (eq drink.type 'Mocha'}}} 
    <h2>mochas</h2> 
    {{drink.type}} 
    {{/if}} 
{{/each}} 

而且你寫{{item.type}}而不是{{drink.type}} 。儘管現在你已經細查了摩卡飲料,你應該能夠擺脫if。只留下:

{{#each drink in mochas}} 
    <h2>mochas</h2> 
    {{drink.type}} 
{{/each}} 

對於find它只是發送GET到後端,它負責返回什麼。如果你想過濾的話:

this.store.find('store-drink', {'store':storeId}, function(drink) { 
    return drink.type === 'Mocha'; 
}); 
+0

哎對不起,我在複製代碼時犯了一個錯誤 - 處於變化中。其實它是'{{if(eq drink.type'Mocha')}}'根據文檔,但我得到一個構建錯誤,說塊不匹配 – awwester

+0

@awwester你需要'#'。 –

+0

好的,謝謝我有模板部分工作,並更好地理解助手與#和沒有#之間的區別。任何想法爲什麼我的mochas對象不是隻返回具有摩卡類型的飲品?我希望路線按類型過濾飲料,但由於某種原因,我的mochas對象正在返回所有飲料類型。 – awwester