Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ember.js connectControllers()_Ember.js - Fatal编程技术网

ember.js connectControllers()

ember.js connectControllers(),ember.js,Ember.js,如果您有两个不同的页面(称为home和Post),它们共享几乎完全相同的内容和功能,那么如何最好地将一个页面绑定到另一个页面 在本文中,我将一个视图的内容与另一个视图的内容关联起来,方法是直接在路由器中设置它,如下所示: Router: Ember.Router.extend({ root: Ember.Route.extend({ //transitions home: Ember.Route.extend({ route: '/',

如果您有两个不同的页面(称为home和Post),它们共享几乎完全相同的内容和功能,那么如何最好地将一个页面绑定到另一个页面

在本文中,我将一个视图的内容与另一个视图的内容关联起来,方法是直接在路由器中设置它,如下所示:

Router: Ember.Router.extend({
 root: Ember.Route.extend({

     //transitions 

      home: Ember.Route.extend({
          route: '/',
          connectOutlets: function(router) {    
               var posts = router.get('postsController.content');                              
               router.get('homeController').set('content', posts);
               router.get('applicationController').connectOutlet('home');
          },
      }),

    //posts and other states
  })
})
但是:如果帖子内容更新了,我真的不需要即时更新主页内容,但是如果我更新了,会吗

还有别的路吗?是否可以使用ConnectController(),然后在何处使用?以下是我的-失败-尝试:


您可以使用
模板
帮助器

<script type="text/x-handlebars" data-template-name="posts">
  <div class="right"><h2>posts page</h2>
    {{template "posts-details"}}
  </div>            
</script>

<script type="text/x-handlebars" data-template-name="posts-details">
  {{#each post in content}} 
    <article>                                   
      <h3><a {{action "doPost" context="post"}} {{bindAttr id="post.id"}}>{{post.title}}</a></h3>
      <p>{{post.date}}</p>
    </article>
  {{/each}}
</script>

帖子页面
{{模板“发布详细信息”}
{{#内容中的每个帖子}

它几乎可以工作了,但在帖子页面中有一个“主页”h2。更新了fiddle&answer。。。Thx@sly7_7!:-)酷,我以前从未用过那个助手。{{template“my template”}和{{view Ember.view templateName=“my template”}}之间的主要区别是{{template}}不会生成另一个Ember视图对象吗?就是这样。这种情况下不需要Ember.View,因为没有特定的处理程序、计算属性等。欢迎光临,没问题。问题是:如果在
home
中使用
connectControllers
,则必须迭代
postsController
,但在
posts.index
中,必须迭代
内容
。。。一个(并非真正干净的)解决方法是在模板中迭代
控制器.postsController
,并避免任何绑定。使用ConnectController的尝试几乎不错,您只需看到homeView的上下文就是homeController。将postsController连接到homeController时,不会自动连接其内容。因此,在“主”模板中,您只需用
postsController
替换
content
。看:@sly7_7谢谢,太好了!但是,不能将您的评论标记为已被接受的答案。看到您的例子,我认为@MikeAski的答案应该是正确的。(因为上下文是相同的,并且视图为)。如果要在控制器之间共享数据,您将使用ConnectController。@sly7_7 am正在检查。我得多练习我的问题表达法。您的评论直接回答了我的问题“是否可以使用connectControllers()…”+问题标题=“ember.js connectControllers()”
<script type="text/x-handlebars" data-template-name="posts">
  <div class="right"><h2>posts page</h2>
    {{template "posts-details"}}
  </div>            
</script>

<script type="text/x-handlebars" data-template-name="posts-details">
  {{#each post in content}} 
    <article>                                   
      <h3><a {{action "doPost" context="post"}} {{bindAttr id="post.id"}}>{{post.title}}</a></h3>
      <p>{{post.date}}</p>
    </article>
  {{/each}}
</script>