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

时间:2013-04-22 18:54:00

标签: ember.js ember-rails

我有一个使用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

知道生成的模板出现问题的原因吗?

1 个答案:

答案 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