2013-03-11 37 views
0

我无法从父控制器中定位子控制器。Ember.js控制器需求和子控制器

有了这个:

<script type="text/x-handlebars" data-template-name="parent"> 
    <h1>Parent controller</h1> 
    {{control "child"}} 
</script> 

<script type="text/x-handlebars" data-template-name="child"> 
    <h2>Child controller</h2> 
    {{controller}} 
</script> 

App.ParentController = Ember.Controller.extend({ 
    needs: ["child"], 
    applyActionOnChild:function(){ 
     this.get('controllers.child').someAction(); 
    } 
}); 
App.ParentView = Ember.View.extend({}); 

App.ChildController = Ember.Controller.extend({ 
    someAction:function(){ 
     //Called but not the right instance 
    }; 
}); 
App.ChildView = Ember.View.extend({}); 

烬的需求特征,似乎当一个孩子控制器调用父控制器,但工作不是周围的其他方式...

如果我把一个断点someAction方法,我可以看到我有一个不同的对象引用,比在子视图上显示的对象引用...

任何人都知道这是如何工作的?提前

回答

1

在您的例子您指定{{controller "child"}}

谢谢,您的意思是否{{control "child"}}?如果不难告诉你想要做什么。

需求功能用于将控制器单例连接在一起,但控制助手在新控制器/视图对的上下文中呈现模板。您不能使用需求来访问这些控制器,因为无法知道您意味着哪个实例。

听起来好像你想在单一的真实childController上下文中呈现“子”模板。在这种情况下使用渲染助手:{{render "child"}}

+1

它做了伎俩,谢谢!太糟糕了,它没有很好的记录... – Fiftoine 2013-03-11 11:10:02

+0

很酷,很高兴帮助。 FWIW“{{control}}”助手仍然是试验性的,如果它被纳入公共API官方文档,将会出现。与此同时@darthdeus在这里的各种帮手上有一篇很好的博客文章:http://darthdeus.github.com/blog/2013/02/10/render-control-partial-view/ – 2013-03-12 04:48:27