javascript - 我怎样才能让 Ember.js handlebars #each 遍历对象?

标签 javascript ember.js

我正在尝试让 {{#each}} 帮助器迭代一个对象,就像在 Vanilla Handlebars 中一样。不幸的是,如果我在一个对象上使用#each,Ember.js 版本会给我这个错误:

断言失败:#each 循环的值必须是数组。你传递了 [object Object]

我写了这个助手试图解决这个问题:

Ember.Handlebars.helper('every', function (context, options) {
  var oArray = [];
  for (var k in context) {
    oArray.push({
      key   : k,
      value : context[k]
    })
  }
  return Ember.Handlebars.helpers.each(oArray, options);
});

现在,当我尝试使用 {{#every}} 时,出现以下错误:

断言失败:registerBoundHelper 生成的助手不支持与 Handlebars block 一起使用。

这似乎是一项基本功能,我知道我可能遗漏了一些明显的东西。谁能帮忙?

编辑:

这是一个 fiddle :http://jsfiddle.net/CbV8X/

最佳答案

使用 {{each-in}} 助手。您可以像 {{each}} 助手一样使用它。

例子:

{{#each-in modelWhichIsObject as |key value|}}
  `{{key}}`:`{{value}}`
{{/each-in}}

JS Bin demo.

关于javascript - 我怎样才能让 Ember.js handlebars #each 遍历对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738047/

相关文章:

javascript - EmberJS 控制台错误-加载路由 : undefined 时出错

javascript - 粗箭头函数抛出错误 "expression expected"

javascript - 如何更好地编写它,例如lodash

javascript - Ember - 如何将属性从 Routes 文件传递​​到 Handlebar 模板并返回 401

javascript - 使用 link-to 从不同的 Controller 调用操作

javascript - 如何修改 ember 应用程序的主 ember cli 应用程序树

html - 有条件地渲染 .hbs 模板 emberjs

javascript - 如何使用响应式设计使 div 的高度和宽度相同?

Javascript:将标签的值传递给变量

javascript - 根据值更改 <td> <i> CSS