提问者:小点点

以编程方式指定Ember. js模板渲染助手的控制器?


情况是我希望我的{{ren}}自动从提供的余烬数据模型的名称中推断控制器名称。

例如在{{渲染'动物'动物}}中,如果动物Cat,我希望模板是用CatController渲染的

渲染助手现在似乎接受了控制器=参数,但随后将该参数视为文字而不是变量。

https://github.com/emberjs/ember.js/blob/master/packages/ember-routing-handlebars/lib/helpers/render.js#L115

目前,我只是将表示代码(模板需要的)放在目标模型中,我认为这很糟糕。

实现这种多态相似渲染的正确方法是什么?


共2个答案

匿名用户

您所描述的功能正是Bember所做的,如此处所述http://emberjs.com/guides/templates/rendering-with-helpers

{{render 'animal' animal}}

将呈现动物模板,以及动物模型、动物控制器和动物视图(如果存在)。

匿名用户

您需要使用渲染助手的替代方案,您可以在其中指定所需的一切。

this.render('TEMPLATENAME', {
    into: 'TEMPLATE/LAYOUT',
    outlet: 'OUTLET NAME IN TEMPLATE',
    controller : 'CONTROLLER NAME FOR CURRENT TEMPLATE',  /*  optional  */
    model : 'MODEL NAME FOR CURRENT TEMPLATE',   /* optional  */ 
});

您可以在renderTemplate函数中直接从您的路由添加它

App.ApplicationRoute = Ember.Route.extend({
    model: function(params){ },
    renderTemplate: function(){

        this._super();   /* Add it to prevent weird behaviour */

        this.render('header', {
           into: 'application',
           outlet: 'header',
           controller: 'headerMenu',
        )};

    },

});