在余烬视图的上下文之外使用ember-rails把手模板

ear*_*old 4 ember.js ember-rails

我有一个使用ember-railsgem 的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"); });
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用此模板:

Ember.TEMPLATES["views/wanderlists/templates/gallery"]({})
TypeError: Cannot read property 'buffer' of undefined
Run Code Online (Sandbox Code Playgroud)

知道为什么生成的模板会遇到麻烦吗?

Mik*_*tti 6

知道为什么生成的模板会遇到麻烦吗?

您不能将由ember Handlebars编译器编译的把手模板调用为正常的把手模板.他们期待一组完全不同的论点.具体来说,他们希望传递的(context, options)选项有一个data.buffer,输出将被写入.例如,如果您尝试:

Ember.TEMPLATES["views/wanderlists/templates/gallery"](this, {data: {buffer: 'NOT-A-BUFFER'}})
Run Code Online (Sandbox Code Playgroud)

控制台应输出 TypeError: Object NOT-A-BUFFER has no method 'push'

我的网站有一部分不是在ember上,但是使用其中一个通过资产管道提供的车把模板会很方便.

好.这很容易做到,而不是Ember.TEMPLATES直接访问.而是使用an Ember.View,并直接调用appendTo()进行渲染.例如:

App = Ember.Application.create({});
var view = Ember.View.create({
  templateName: "views/wanderlists/templates/gallery",
  name: "Bob"
});
view.appendTo("#message");
Run Code Online (Sandbox Code Playgroud)

这里的工作示例:http://jsfiddle.net/mgrassotti/VWmFq/1/

有关更多详细信息,请参阅Ember指南:定义视图