gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:22:10 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com