1

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

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 ?有什么建议么 ?

干杯

4

1 回答 1

1

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

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

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

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

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

{{setVariableView App.config}}

唯一关心的是eval. 也许是清晨没有帮助,但我现在想不出更好的选择。

于 2013-02-12T09:50:15.633 回答