Javascript 余烬把手嵌套每个不工作
以下余烬把手模板渲染第一行,但不渲染嵌套的每一行(或内部的每一行)中的一行Javascript 余烬把手嵌套每个不工作,javascript,ember.js,Javascript,Ember.js,以下余烬把手模板渲染第一行,但不渲染嵌套的每一行(或内部的每一行)中的一行 {{{#每个someData.items作为| item}} {{item.fld1}} {{item.fld2}} {{{#每个项目。Reas as{rea}} {{rea}} {{/每个}} {{/每个}} 问题是什么 我使用的是Ember版本1.13很可能,您的问题是您使用的是Ember 2.0或更高版本(基于外部每个循环),因此内部每个循环的格式现在无效(以前已弃用)。另外,两个循环使用相同的变量名item,
{{{#每个someData.items作为| item}}
{{item.fld1}}
{{item.fld2}}
{{{#每个项目。Reas as{rea}}
{{rea}}
{{/每个}}
{{/每个}}
问题是什么
我使用的是Ember版本1.13很可能,您的问题是您使用的是Ember 2.0或更高版本(基于外部
每个循环),因此内部每个循环的格式现在无效(以前已弃用)。另外,两个循环使用相同的变量名item
,无法正常工作
只需使用与外部循环中相同的格式:
更改:
{{#each item in item.Reasons}}
致:
编辑
如果您的Reas
数组的外观与您在评论中描述的相同:
item.Reas = [null]; // arrays containing a single `null` value
然后,Handlebar将为这些值显示一个空字符串,因为Handlebar将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;
});
编辑2
根据您在评论中的解释:
由于您使用的是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不支持嵌套的@each
观察者。还有,为什么你要使用两种不同的each语法?它的可能副本实际上是不同的thx…我使用的是Ember版本1.13…让我试试你的代码它仍然不能处理更新后的each语句…使用{{each as}语法处理内部/外部的each现在我只是在twiddle中尝试了你的示例代码,它对我有效。以下是链接:。如果它仍然不适用于您,那么您可以在ember twiddle中共享您的代码吗?它使用哪个版本?另外,我的JSON结构略有不同,我想打印对象键本身等等,您的原因数组包含一个元素,它是null
值?
// 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}}
{{#each-in items as |key value|}}
<p>{{key}}: {{value}}</p>
{{/each-in}}