Coffeescript 使用的控制器实例与;“控制”;帮手
使用以下型号:Coffeescript 使用的控制器实例与;“控制”;帮手,coffeescript,ember.js,ember-data,Coffeescript,Ember.js,Ember Data,使用以下型号: App.Post = DS.Model.extend title: DS.attr 'string' comments: DS.hasMany 'App.Comment' App.Comment = DS.Model.extend body: DS.attr 'string' post: DS.belongsTo 'App.Post' 我正在我的帖子模板中显示所有帖子和所有帖子评论: {{#each post in controller}} {{post.
App.Post = DS.Model.extend
title: DS.attr 'string'
comments: DS.hasMany 'App.Comment'
App.Comment = DS.Model.extend
body: DS.attr 'string'
post: DS.belongsTo 'App.Post'
我正在我的帖子模板中显示所有帖子和所有帖子评论:
{{#each post in controller}}
{{post.title}}
{{#each comment in post.comments itemController="comment"}}
{{partial 'comment' comment}}
{{this}}
{{/each}}
{{/each}}
这里使用了控件助手,以便为每个注释获取一个控制器
我有一个CommentsController,他的模型是从帖子中提取的一组扁平的评论
App.CommentsController = Em.ArrayController.extend
itemController: 'comment'
needs: 'posts'
postsBinding: 'controllers.posts'
comments: (->
comments = []
@get('posts').forEach (post) ->
post.get('comments').forEach (comment) ->
comments.pushObject comment
console.log comments
@set 'model', comments
).observes('posts.length')
App.CommentController = Em.ObjectController.extend()
该控制器确实按照预期使用CommentController装饰每个记录,但是它似乎在创建新的控制器实例,而不是重用模板中呈现的控制器。有没有办法找到相同的实例 根据设计,每个
{{control}
助手将创建控制器的新实例。听起来您要查找的内容是由{{each}
帮助程序提供的
{{#each post in controller}}
{{post.title}}
{{each comment in post.comments itemViewClass="App.ItemView" itemController="item"}}
{{/each}}
嗨,马克,谢谢你的回答。实际上,我仍然得到了重复的控制器-可能是我的
comments
方法正在创建这些重复的控制器,而不是查找现有的实例吗?我在comments
方法中没有看到任何可以做到这一点的东西。也许我不明白你想做什么。您说过“它似乎在创建新的控制器实例,而不是重用模板中呈现的控制器”。创建新控制器实例的确切时间。你怎么知道呢?好的,我刚刚添加了关于如何记录每个实例的代码-基本上只是在模板中或通过console.log
打印出对象。我得到了CommentController实例,但它们在模板中与CommentsController中的不一样。从CommentsController创建的实例绑定到posts
数组,该数组是使用余烬数据获取的集合。