我有一个使用ember-rails
gem的rails应用程序。
我的网站中有一部分不是在ember上,但是使用其中一个通过资产管道提供的车把模板会很方便。然而,似乎出现了一些问题。具体来说,我的模板返回如下:
Ember.TEMPLATES["views/wanderlists/templates/gallery"] = Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) { helpers = helpers || Ember.Handlebars.helpers; var self=this;
data.buffer.push("<h1>Gallery!</h2>\n"); });
但是,如果我尝试使用此模板:
Ember.TEMPLATES["views/wanderlists/templates/gallery"]({})
TypeError: Cannot read property 'buffer' of undefined
知道生成的模板出现问题的原因吗?
答案 0 :(得分:6)
知道为什么生成的模板会出现问题吗?
您无法调用由ember把手编译器编译的把手模板,就好像它们是正常的把手模板一样。他们期待一组完全不同的论点。具体来说,他们希望传递(context, options)
,其中options有一个data.buffer,输出将被写入。例如,如果您尝试:
Ember.TEMPLATES["views/wanderlists/templates/gallery"](this, {data: {buffer: 'NOT-A-BUFFER'}})
控制台应输出TypeError: Object NOT-A-BUFFER has no method 'push'
我的网站中有一部分不是在ember上,但是使用其中一个通过资产管道提供的车把模板会很方便。
行。这很容易做到,而不是直接访问Ember.TEMPLATES
。而是使用Ember.View
,并直接调用appendTo()进行渲染。例如:
App = Ember.Application.create({});
var view = Ember.View.create({
templateName: "views/wanderlists/templates/gallery",
name: "Bob"
});
view.appendTo("#message");
这里的工作示例:http://jsfiddle.net/mgrassotti/VWmFq/1/
有关详细信息,请参阅Ember Guides: Defining a view