Ember.js 带有itemController的余烬组件

Ember.js 带有itemController的余烬组件,ember.js,ember-cli,Ember.js,Ember Cli,我有一个时间线,在路线上发布了两种类型的帖子:来自facebook和来自twitter,都有相同的控制器:使用两种方法发布:isFacebook和isTwitter 每种类型的帖子都有一个组件和一个“帖子索引”,使用这两种方法重新定义正确的组件 使用默认ArrayController发送post: 问题是当我尝试在route post.post中使用post index模板渲染单个post时 路线: 模板: <ul class="timeline"> {{#each po

我有一个时间线,在路线上发布了两种类型的帖子:来自facebook和来自twitter,都有相同的控制器:使用两种方法发布:isFacebook和isTwitter

每种类型的帖子都有一个组件和一个“帖子索引”,使用这两种方法重新定义正确的组件

使用默认ArrayController发送post:

问题是当我尝试在route post.post中使用post index模板渲染单个post时 路线:

模板:

 <ul class="timeline">
     {{#each post in model}}
         <li> {{post-index post=post}} </li>
      {{/each}}
 </ul>
我的路线帖子只起作用,因为它有itemController=posts.post
但是波斯特,波斯特不。我该怎么办?

如果我正确理解了您的问题,您可能想知道如何将post本身传递给post-to-post属性post-index

如果是,您可以按如下方式修改代码:

 <ul class="timeline">
     {{#each post in model}}
         <li> {{post-index post=this}} </li>
      {{/each}}
 </ul>

唯一的改变就是把帖子改成这个。由于您处于一个each块中,这将传递当前迭代的项。

正确,但要决定RenderWitter或facebook post index需要使用哪个组件,请使用controllerposts.post方法facebook/IsWitter这将检查模型属性,或者此逻辑应移到哪里?我不确定我是否100%理解你的问题。您的模型是否具有iFacebook和iSwitter方法?如果是这样的话,将帖子传递到帖子索引并利用模板中发布的逻辑应该是可行的。有什么东西没有像你期望的那样工作吗?我的模型有社交网络属性。如果此属性为“facebook”或“twitter”,则My controller posts.post方法isFacebook IsWitter返回true,但这会在控制器和组件之间创建依赖关系。我需要在post index中找到一种方法来决定组件渲染。已解决:在我的post index模板中,我应该使用{{if this.isFacebook}}并在组件控制器中添加此方法。谢谢你的帮助。我的错误在itemController中。
export default Ember.Route.extend({
    setupController(controller, model) {
        this._super(controller, model);
        controller.set('model', model);
  }
});
 <ul class="timeline">
     {{#each post in model}}
         <li> {{post-index post=post}} </li>
      {{/each}}
 </ul>
 <ul class="timeline">
     {{#each post in model}}
         <li> {{post-index post=this}} </li>
      {{/each}}
 </ul>