首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在plunker中维护我的下划线模板设置?

如何在plunker中维护我的下划线模板设置?
EN

Stack Overflow用户
提问于 2012-12-06 04:03:44
回答 1查看 1.6K关注 0票数 3

我已经用了一个月的时间了。我正在制作一个backbonejs柱塞,我看到下划线丢失了我的模板设置,并回落到ERB样式模板,而我更喜欢Mustache样式的语法{{ myData }}。我正在设置我的app.js中的值(我总是在我的应用程序中这样做),但由于某些原因,它一直更改回ERB <%=boo%>。有人能帮我弄清楚我的模板设置吗?plunker using underscore templating你需要在chrome开发工具或firebug或等同工具中查看控制台输出。

谢谢你的建议和技巧。我试过了

代码语言:javascript
复制
_.templateSettings = { 
   interpolate: /\{\{(.+?)\}\}/g,
   evaluate: /\[\[(.+?)\]\]/g
 }; 

当我在设置后立即在app.js文件中使用console.log(_.templateSettings)时,一切似乎都是正确的,但我的模板没有被处理。我可以在视图内部中断并运行相同的console.log(),我看到它已经切换回ERB样式。有人知道如何让我的设置生效吗?也许这是一个柱塞问题,因为我已经使用过这种方法很多次,但都没有问题。

这通常能起到作用。我甚至试着..。window._ = _;

感谢你的任何帮助,提示,技巧,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-06 06:43:13

你只是有一个执行顺序的问题。你的app.js是这样说的:

代码语言:javascript
复制
var app = {
  init: function () {
    _.templateSettings = {
      interpolate: /\{\{(.+?)\}\}/g,
      evaluate: /\[\[(.+?)\]\]/g
    };
    window._ = _;
  },
  //...

因此,在有人调用app.init()之前,您的模板设置不会被应用。如果我们看一下您在main.js中的一个视图,我们将看到如下所示:

代码语言:javascript
复制
Zurg.Views.AltContent = app.View.extend({
  #...
  template: _.template([...].join('')),
  #...

因此,您的_.template调用是在加载和解析main.js时发生的,但直到稍后才会调用app.init()

你所需要做的就是按照这个顺序安排事情发生:

  1. 加载库(jQuery,Underscore,Backbone,...)
  2. 调整_.templateSettings以使用您的视图。

如果您将_.templateSettings移到外部app.init

代码语言:javascript
复制
_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g,
    evaluate: /\[\[(.+?)\]\]/g
};

var app = {
  init: function () {
    // Whatever you really need to initialize things goes here...
  },
  //...

那么一切都会好起来的。顺便说一句,你的window._ = _;技巧没有做任何有用的事情,所以我把它拿出来了。你也应该在_.templateSettings中包含一个escape正则表达式,你可能不需要它,但是完整性是很好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13731460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档