Ember.js控制器需要和子控制器

时间:2013-03-11 02:23:17

标签: 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({});

当子控制器调用父控制器而不是反过来时,ember的需求功能似乎有效...

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

任何人都知道这有用吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

在您的示例中指定{{controller "child"}},您的意思是{{control "child"}}吗?如果不难说出你想要做什么。

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

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