ember:使用itemController在{{#each ..}}上的奇怪行为

时间:2015-06-03 12:25:51

标签: ember.js ember-cli

在我们的许多emberjs-apps中,我遇到了一些问题,从旧的AppKit结构更新到ember-cli 0.2.6和ember 1.12.1。在这个项目中,每个0x6F38C8 + 0x8 = 0x6F38D0都会提出:

  

未捕获错误:断言失败:#each循环的值必须是数组。你传递了monopoto @ controller:array:,但它应该是一个ArrayController

为了达到本质,我将事情简化为:

foo.js:

{{#each item in myarray itemController="my-item"}}

foo.hbs:

export default Ember.Controller.extend({
   myData: [1,2,3]
});

这很好用并提供:{{#each item in myData}} {{item}} {{/each}}

如果我添加这样的项目控制器:

FOO-item.js:

123

并修改{{each}}以使用该控制器:

export default Ember.Controller.extend({
   foo: function(){
      return "bar" + this.get("model");
   }.property("model")
});

发生错误。

我在另一个ember项目上做了同样的事情,使用像这样的项目控制器一切正常。我在这两个项目上用几个ember版本测试了这个。一个人总是失败而另一个人总是工作。任何想法?

2 个答案:

答案 0 :(得分:0)

控制器无法接受号码。它只能接受物体。 这应该有用。

export default Ember.Controller.extend({
   myData: [{ value: 1 },{ value: 2 },{ value: 3 }]
});

答案 1 :(得分:0)

myData附加到您的控制器实例,而不是数组控制器。如果我正确理解您的问题,您需要执行以下操作:

{{#each ctl in controller itemController="foo-item"}}
  {{ctl.foo}}
{{/each}}

如果这可以解决您的问题,请告诉我。