有什么方法可以通过前端的 Backbone 在服务器上呈现 Handlebars 模板吗?
Is there any way to render Handlebars templates on server via Backbone in front-end?
已编辑
这个问题是除了之前的 Handlebars with Backbone template not rendering 问题之外的问题,在这个问题中,浏览器根本没有呈现表单,现在表单的问题已经解决了,但是 returns 另一个错误也可能与呈现有关.
我有一个应用程序,前端有 Backbone,后端有 Express,带有 express-handlebars 模板,我试图从 Underscore 模板更改为 Handlebars,同时仍然保留 backbone 逻辑在后面。所以我这样做的方式 - 通过 Bower 安装车把然后需要它。
app.ContactView = Backbone.View.extend({
//....
template: Handlebars.compile( $('#tmpl-contact').html() ),
//....
});
而不是
app.ContactView = Backbone.View.extend({
//....
template: _.template( $('#tmpl-contact').html() ),
//....
});
但它 returns 错误,我真的不明白是什么原因造成的。
当我尝试加载页面时,例如:
http://192.168.33.10:3000/contact/
它没有在浏览器中显示任何错误。但如果我搬到:
http://192.168.33.10:3000/about
它甚至没有 Backbone 背后的逻辑 returns 一个错误:
You must pass a string or Handlebars AST to Handlebars.compile. You
passed undefined
这意味着模板在 DOM 加载到页面之前编译。但是我的 Backbone 脚本在 html 脚本 e 之后加载。 G。在 {{{body}}}
元素之后。此外,如果订单有问题,我应该在每个订单上都会收到此错误,而不仅仅是在转移到另一个订单时。
所以我认为原因是服务器上的前端把手和快速把手之间存在某种冲突。如何解决这个问题,最好是通过 expHbs
实例呈现的模板?
如果您所做的唯一更改是:
template: Handlebars.compile( $('#tmpl-contact').html() ),
至:
template: _.template( $('#tmpl-contact').html() ),
它不会导致您描述的问题。正如错误消息告诉您的那样 "You passed undefined",并且 undefined
也无法使用 Underscore 代码。
您似乎更可能更改了其他内容,而该更改导致了您描述的问题。但是,如果没有更多代码(最好是 JS Fiddle),很难说是什么。
通过将每个 Backbone 部分作为其路径的单独文件加载来解决问题。
已编辑
这个问题是除了之前的 Handlebars with Backbone template not rendering 问题之外的问题,在这个问题中,浏览器根本没有呈现表单,现在表单的问题已经解决了,但是 returns 另一个错误也可能与呈现有关.
我有一个应用程序,前端有 Backbone,后端有 Express,带有 express-handlebars 模板,我试图从 Underscore 模板更改为 Handlebars,同时仍然保留 backbone 逻辑在后面。所以我这样做的方式 - 通过 Bower 安装车把然后需要它。
app.ContactView = Backbone.View.extend({
//....
template: Handlebars.compile( $('#tmpl-contact').html() ),
//....
});
而不是
app.ContactView = Backbone.View.extend({
//....
template: _.template( $('#tmpl-contact').html() ),
//....
});
但它 returns 错误,我真的不明白是什么原因造成的。
当我尝试加载页面时,例如:
http://192.168.33.10:3000/contact/
它没有在浏览器中显示任何错误。但如果我搬到:
http://192.168.33.10:3000/about
它甚至没有 Backbone 背后的逻辑 returns 一个错误:
You must pass a string or Handlebars AST to Handlebars.compile. You passed undefined
这意味着模板在 DOM 加载到页面之前编译。但是我的 Backbone 脚本在 html 脚本 e 之后加载。 G。在 {{{body}}}
元素之后。此外,如果订单有问题,我应该在每个订单上都会收到此错误,而不仅仅是在转移到另一个订单时。
所以我认为原因是服务器上的前端把手和快速把手之间存在某种冲突。如何解决这个问题,最好是通过 expHbs
实例呈现的模板?
如果您所做的唯一更改是:
template: Handlebars.compile( $('#tmpl-contact').html() ),
至:
template: _.template( $('#tmpl-contact').html() ),
它不会导致您描述的问题。正如错误消息告诉您的那样 "You passed undefined",并且 undefined
也无法使用 Underscore 代码。
您似乎更可能更改了其他内容,而该更改导致了您描述的问题。但是,如果没有更多代码(最好是 JS Fiddle),很难说是什么。
通过将每个 Backbone 部分作为其路径的单独文件加载来解决问题。