在Ember.js我有這樣的模式:Ember.js 「每一個」 麻煩
App.Product = DS.Model.extend({
name: DS.attr("string"),
ean: DS.attr("number"),
price: DS.attr("number"),
units: DS.attr("number"),
product_states: DS.hasMany('App.ProductState')
});
App.ProductState = DS.Model.extend({
price: DS.attr("number"),
units: DS.attr("number"),
product_id: DS.belongsTo('App.Product'),
user_id: DS.belongsTo('App.User'),
created: DS.attr("date")
});
而且我有這樣每個:
{{#if view.product}}
{{#each item in App.ProductState.find({ product_id: view.product.id})}}
<tr>
<td>{{view.product.name}}</td>
<td>{{item.price}}</td>
<td>{{item.units}}</td>
<td>{{item.created}}</td>
</tr>
{{/each}}
{{/if}}
這給了我這個錯誤(鉻):
Uncaught Error: Parse error on line 6:
...in App.ProductState.find({ product_id: v
-----------------------^
Expecting 'ID', got 'INVALID'
我在加載頁面時出現此錯誤。在加載時,view.product設置爲NULL。每個都在jQuery UI對話框中,其內容是通過按鈕view.set("product",product);
動態設置的。
設置產品對象的工作原理是因爲當我想在對話窗口中打印出一個產品變量時,它工作得很好,但是當我使用它們時,它會崩潰。
在我看來,Ember忽略了if條件並試圖通過每個給出錯誤的循環。其他選擇是,我只是使用find方法錯誤(btw。Ember指南告訴你如何設置模型關係,但據我所知,沒有提到他們有什麼效果以及如何正確使用它們)。
是否可以解決該問題?也許像運行javascript函數而不是模板或其他東西?
使用該框架,您應該將數據加載到Controller中,然後使用View顯示它。 – harn145
我很抱歉,但這太籠統了。 – Ragnar
當然,但也是Ember.js框架的核心。沒有更多的代碼細節,這是我能做的最好的。例如: 你使用路由嗎?如果是這樣,你是否設置了相關路線的模型? 如果不是,您的應用程序視圖如何定義?你還展示了什麼其他元素,以及如何? 其實質是視圖以控制器爲基礎,並且控制器的「內容」具有一個或多個記錄(模型實例),基於您用來填充它的查找類型或您實例的方式(所以無論是一個ObjectController或一個ArrayController)。 – harn145