【问题标题】:EmberJs: render template inside Handlebars-helperEmberJs:在 Handlebars-helper 中渲染模板
【发布时间】:2013-01-27 12:18:25
【问题描述】:

我有这种情况,我将模板名称存储在一个变量中。我注意到如果你有例如

var config = { view: "PeopleView", .... } ;

你做不到的

{{view App[config.view]}}

如果可能,我仍然对解决方案感兴趣! 无论如何,我决定使用 Handlebars 助手来解决这个问题:

{{setVariableView config}}

...

Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) {
    return App[value.view].create(value) ; // <-- this doesn't work :)
}) ;

此时我不知道如何调用编译好的 PeopleView ? 有什么建议吗?

干杯

【问题讨论】:

    标签: ember.js handlebars.js helpers


    【解决方案1】:

    首先你要创建你的配置对象,就像你所做的那样:

    App.config = Ember.Object.create({ view: 'App.MyView' });
    

    然后你想注册你的助手,你已经完成了,但它需要稍微修改一下,因为当你采用这种方法时,视图需要手动appended:

    Ember.Handlebars.registerBoundHelper('setVariableView', function(value, options) {
        var view = eval(value.view).create();
        view.append();
    });
    

    现在您可以将配置文件传递给您的setVariableView 助手,它会渲染传入您的配置的视图:

    {{setVariableView App.config}}
    

    唯一的问题是eval 的使用。也许是清晨没有帮助,但我目前想不出更好的选择。

    【讨论】:

    • 您可以将配置对象定义为App.config = Ember.Object.create({ app: App, view: 'MyView' });,并在助手中:var view = value.app[value.view].create();。这样你就不需要使用eval:)
    • value.app[value.view].create() 创建一个对象/类。如何创建字符串并将其传递给上下文(如:值)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2013-01-22
    • 2016-12-12
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多