[英]Ember Handlebars nested each not working
以下 Ember Handlebars 模板呈現第一行,但不呈現嵌套的 each(或內部 each)
<table width="50%">
{{#each someData.items as |item|}}
<tr> <!-- This one RENDERS -->
<td width="25%"><span class="boldTxt">{{item.fld1}}</span></td>
<td width="25%">{{item.fld2}}</td>
</tr>
{{#each item.Reas as |rea|}}
<tr> <!-- This one does not RENDER -->
<td>{{rea}}</td>
</tr>
{{/each}}
{{/each}}
</table>
什么問題??
我正在使用 Ember 版本 1.13
很可能,您的問題是您使用的是Ember2.0或更高版本(基於您的外部each
循環),因此您的內部each
循環具有現在無效(以前不推薦使用)的格式。 此外,您對兩個循環使用相同的變量名稱item
,這將無法正常工作。
http://guides.emberjs.com/v2.1.0/templates/displaying-a-list-of-items/
只需使用與外循環相同的格式:
改變:
{{#each item in item.Reasons}}
到:
{{#each item.Reasons as |reason|}}
如果您的Reas
數組看起來像您在評論中所描述的那樣:
item.Reas = [null]; // arrays containing a single `null` value
然后,handlebars 將顯示這些值的空字符串,因為 Handlebars 將undefined
和null
強制為空字符串。
{{reas}} {{!-- if reas is null then an empty string is printed --}
如果你想顯示null
和undefined
值,你可以做一個簡單的助手來做到這一點:
// helpers/show-value.js
import Ember from "ember";
export default Ember.Helper.helper(function(params) {
let value = params[0];
if(value === undefined) { return 'undefined'; }
if(value === null) { return 'null'; }
return value;
});
根據您在評論中的解釋:
由於您使用的是 Ember 1.13,因此您需要一種解決方法來實現這一點。 這是一種方法:
// components/each-keys.js
export default Ember.Component.extend({
object: null, // passed in object
items: Ember.computed('object', function() {
var object = Ember.get(this, 'object');
var keys = Ember.keys(object);
return keys.map(function(key) {
return { key: key, value: object[key]};
})
})
})
用法:
{{#each-keys object=item.Reas as |key value|}}
<tr>
<td>{{key}}</td>
<td>{{value}}</td>
</tr>
{{/each-keys}}
如果您更新到 Ember 2.0,從 1.13 開始應該非常簡單(因為 2.0 基本上是 1.13 沒有棄用),您可以使用each-in
助手來迭代對象並訪問其鍵和值。 這是一個簡單的例子:
{{#each-in items as |key value|}}
<p>{{key}}: {{value}}</p>
{{/each-in}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.