2013-03-11 56 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