ember.js - 在 ember View 上下文之外使用 ember-rails Handlebars 模板

标签 ember.js ember-rails

我有一个使用 ember-rails gem 的 Rails 应用程序。

我网站的一部分不在 ember 上,但使用通过 Assets 管道提供的 Handlebars 模板之一会很方便。然而,似乎出了什么问题。具体来说,我的模板返回如下:

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

知道为什么生成的模板会出现问题吗?

最佳答案

Any idea why the generated template would be having trouble?

您不能像调用普通 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'

There is a section of my site that is not on ember, but where it would be convenient to use one of the handlebar templates served via the asset pipeline.

好的。这确实很容易做到,只是不直接访问 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

关于ember.js - 在 ember View 上下文之外使用 ember-rails Handlebars 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16154531/

相关文章:

javascript - 了解 Ember 中 Controller 和路由之间的关系

javascript - Ember JS : is it possible to save only modified objects?

javascript - Ember.js hasMany 作为复选框列表

ember.js - 升级到 Rails 4 后,Handlebars 资源无法与 ember-rails 一起编译

ruby-on-rails - Rails Ember 混合应用程序

javascript - 注册成功后登录 Ember-Simple-Auth

javascript - Ember.js 查询参数不尊重替换 : true and using replaceState

ruby-on-rails-3 - Ember 路线和 Rails 路线

ruby-on-rails - 如何使用 ember-rails gem 为我的 HandlebarsJS 模板指定替代目录?

ember.js - Rails 使用 ember-template-compiler 预编译失败