我一直在使用plunker一个月左右。我正在制作一个backbonejs plunker,我看到Underscore丢失了我的模板设置并回退到ERB样式模板,而我想要Mustache样式语法{{ myData }}
。我在app.js中设置了值(我在我的应用程序中总是这样做)但由于某种原因,它会不断更改为ERB <%=boo%>
。有人可以帮我把模板设置理顺吗?
plunker using underscore templating您需要在chrome dev工具或firebug中查看控制台输出或等同...
感谢任何提示或技巧。我试过了
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g,
evaluate: /\[\[(.+?)\]\]/g
};
当我在我的app.js文件中设置console.log(_.templateSettings)
后,一切似乎都正确,但我的模板没有被处理。我可以在视图中打破并运行相同的console.log(),我看到它已切换回ERB样式。有谁知道如何让我的设置坚持下去?也许这是一个吸引人的问题,因为我多次使用这种方法没有问题。
通常可以解决问题。我甚至试过...... window._ = _;
感谢您提供任何帮助,提示,技巧等......
答案 0 :(得分:1)
您只有执行问题的订单。您的app.js
说了这个:
var app = {
init: function () {
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g,
evaluate: /\[\[(.+?)\]\]/g
};
window._ = _;
},
//...
因此,在有人致电app.init()
之前,您的模板设置不会被应用。如果我们在main.js
查看您的一个观点,我们会看到以下内容:
Zurg.Views.AltContent = app.View.extend({
#...
template: _.template([...].join('')),
#...
因此,在加载和解析_.template
时会发生main.js
调用,但直到稍后才会调用app.init()
。
您需要做的就是按顺序安排事情:
_.templateSettings
以使用分隔符。如果您将_.templateSettings
移至app.init
之外:
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g,
evaluate: /\[\[(.+?)\]\]/g
};
var app = {
init: function () {
// Whatever you really need to initialize things goes here...
},
//...
然后一切都应该成功。顺便说一句,你的window._ = _;
伎俩并没有做任何有用的事情,所以我把它拿出来了。你应该在escape
加入_.templateSettings
正则表达式,你可能不需要它,但完整性很好。