Loops 在把手模板中迭代对象

Loops 在把手模板中迭代对象,loops,object,ember.js,each,handlebars.js,Loops,Object,Ember.js,Each,Handlebars.js,如何在余烬应用程序中迭代把手模板中的对象 <div class="alert alert-danger"> <strong>We couldn't create this Company.</strong> {{#each errors} <p>{{this}}</p> {{/each}} </div> console.log(response.errors); Object {0

如何在余烬应用程序中迭代把手模板中的对象

<div class="alert alert-danger">
  <strong>We couldn't create this Company.</strong>
  {{#each errors}          
    <p>{{this}}</p>
  {{/each}}
</div>

console.log(response.errors);

Object {0: "Name can't be blank", 1: "Zip code can't be blank", 2: "Company type can't be blank", 3: "Address line can't be blank", 4: "Country can't be blank", 5: "State can't be blank"}

我们无法创建此公司。
{{{#每个错误}
{{this}}

{{/每个}} console.log(response.errors); 对象{0:“名称不能为空”,1:“邮政编码不能为空”,2:“公司类型不能为空”,3:“地址行不能为空”,4:“国家不能为空”,5:“州不能为空”}
我在控制台中遇到的错误是:

未捕获错误:断言失败:每个循环必须覆盖的值 是数组。您传递的{0:名称不能为空,1:邮政编码不能为空 空,2:公司类型不能为空,3:地址行不能为空, 4:国家不能为空,5:国家不能为空}


有什么建议吗?

正如控制台错误所述,
每个
帮助程序仅适用于数组,因此它不会直接适用于
错误
对象。但是,您可以为
错误
对象创建计算属性,并在属性内部使用(或类似的映射函数)将对象映射到数组


是的,但不幸的是,当添加、更改或删除
errors
中的属性时,此属性不会更新,除非您调用
notifyPropertyChange
@torazaburo,这不是一个明确的要求,但您是对的。有大量的计算属性宏将允许自动转换一个对象可以在某些方面表现得像一个关联数组,但底线是它不是一个。也许可以编写一个
mixin
来创建必要的
observes
设置,但是当你完成所有这些设置时你可能想知道为什么不把模型重塑成数组。是的,我并不是说你不需要把对象重塑成数组——你需要这样做,以便在它上面
#每一个
。我只是指出需要一些额外的机制来保持数组映射的最新。重构错误是arrayDid你看我下面的答案吗?既然问题仍然悬而未决,你是否愿意详细说明它如何满足你的要求?
errorsArray: function() {
  return $.map(errors, function( value, key ) {
    return value;
  });
}.property('errors')