我有一个使用ember-rails gem的rails应用程序。
我的网站有一部分不在ember上,但在那里可以方便地使用通过资源管道提供的handlebar模板之一。然而,似乎有些地方出了问题。具体来说,我的模板是这样返回的:
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你知道为什么生成的模板会有问题吗?
发布于 2013-04-23 10:43:51
你知道为什么生成的模板会有问题吗?
你不能像调用普通的handlebars模板一样调用由ember handlebars编译器编译的handlebars模板。他们期望的是一套完全不同的论点。具体地说,它们希望传递(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上,但在那里可以方便地使用通过资源管道提供的handlebar模板之一。
好的。这真的很容易做到,只是不是通过直接访问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
https://stackoverflow.com/questions/16154531
复制相似问题