0
有如下型號相同的控制器實例:使用的產生由「控制」幫手
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}}
這裏使用了控制助手,這樣我就可以得到每個評論的控制器。
我有一個評論控制器誰是模型是從帖子中取得的評論的平面陣列。
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每個記錄,但它似乎是創造新的控制器實例,而不是重新使用在模板中呈現的控制器。有沒有找到相同的實例的方法?
嗨馬克,謝謝你的回答。我實際上仍然得到重複的控制器 - 可能是我的'評論'方法創造這些重複,而不是找到現有的實例? – tigrish 2013-03-14 17:38:08
我在'comments'方法中沒有看到任何可以做到的事情。也許我不明白你想做什麼。你說「它似乎在創建新的控制器實例,而不是重新使用在模板中呈現的控制器」。什麼時候創建新的控制器實例。你怎麼知道的? – 2013-03-14 19:24:37
好的,我剛剛添加了關於我如何登錄每個實例的代碼 - 基本上只是將模板中的對象或通過「console.log」輸出。我得到CommentController實例,但它們在模板中與CommentsController中的不一樣。 從CommentsController創建的實例綁定到'posts'數組,這是一個用ember-data獲取的集合。 – tigrish 2013-03-15 13:21:34