为什么我的{{#each}}无效?

时间:2012-10-15 19:40:56

标签: ember.js

为什么我的Ember Snippet链接不起作用?我正在设置一个简单的ArrayController并在初始化时用内容填充它。然后我想在{{#each}}的帮助下显示该控制器的内容,但这不起作用。

在我阅读的教程中,总是使用以下结构:

{{#each  AppNamespace.myModelController}}
...
{{each}}

但为了使我的例子工作,我必须使用:

{{#each  AppNamespace.myModelController.content}}
...
{{/each}}

你能看看提供的小提琴并告诉我它有什么问题吗?我认为我一定做错了,因为我经常在教程中看到这种模式。

注意:我是来自Java Server Development的Javascript初学者。因此,我正在努力解决JS基础问题。

我会在这里发布完整的代码,但格式化不正常。

Link to my JS Fiddle showing my problem

4 个答案:

答案 0 :(得分:3)

在init方法中添加对this._super()的调用。

https://github.com/emberjs/ember.js/pull/1251

此外,与您的问题没有直接关系,但看起来您会从这里阅读#6中受益:http://codebrief.com/2012/03/eight-ember-dot-js-gotchas-with-workarounds/

答案 1 :(得分:1)

尝试使用http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.6.min.js而不是1.0,但在两种情况下都能正常工作。

答案 2 :(得分:1)

我开始自己看看Ember,我很关心你正在使用的过程。

据我所知,你不应该直接从控制器那里检索数据。您使用的模式应基于模型,控制器,视图和路由器。

http://trek.github.com/是我在学习Ember时发现有用的资源。

基于这个例子,这将是我对小型余烬测试应用程序的看法:

http://jsfiddle.net/zDfBv/

希望这对你有用处作为起点。

答案 3 :(得分:0)

如果你将1个参数传递给#each帮助器,它需要是一个Ember.Array兼容对象 - 在你的第一个例子中,当你的数据在content属性中时你传递控制器..你的第二个例子是有效的,因为你通过了内容属性..如果您愿意,可以这样做。

然而,您可能会更频繁地看到#each助手的替代语法,它使用元素命名{{#each model in myModelController}} ... {{/each}}。当你这样做时,Ember负责为你寻找内容属性,因为它是视图的默认渲染上下文。

假设您正在使用Github的最新版本,您会发现它会在两种情况下都寻找内容,因此一旦发布稳定,这一点就变得毫无意义了。