Templates 玉模板;每一个;函数返回空对象
我有一只虫子已经困扰了我好几天了。我对Node和Jade模板系统非常陌生,所以请耐心听我说:我希望通过以下方式添加样式表: App.js(Express): 在layout.jade(与app.jade一起执行)中,我有: 再加上更多。。。我一直遇到同样的错误:Templates 玉模板;每一个;函数返回空对象,templates,views,node.js,pug,Templates,Views,Node.js,Pug,我有一只虫子已经困扰了我好几天了。我对Node和Jade模板系统非常陌生,所以请耐心听我说:我希望通过以下方式添加样式表: App.js(Express): 在layout.jade(与app.jade一起执行)中,我有: 再加上更多。。。我一直遇到同样的错误: 9. ' - if(stylesheet.indexOf(\'http') >= 0)' Object function () { var o = {}, i, l = this.length, r = []; for(
9. ' - if(stylesheet.indexOf(\'http') >= 0)'
Object function () {
var o = {}, i, l = this.length, r = [];
for(i=0; i
for(i in o) r.push(o[i]);
return r;
} has no method 'indexOf'
现在。。问题是,这个模板在另一个传递完全相同变量的应用程序中工作:我非常感谢你们对这个棘手问题的任何建议
谢谢!
马特·米勒这是你的问题 在这方面:
res.render('app.jade', {locals : locals});
您正在传入locals==>locals,这是一个散列(好吧,我是PERL的家伙,我认为JS称它们为“关联数组”)
现在,在您的jade模板中,我们有一行:
- var stylesheets = stylesheets || [];
在JADE内部,您已经定义了变量“locals”,但其他所有内容都隐藏在该变量下,因此没有定义变量“stylesheets”(而是定义了locals.stylesheets)。因此,这行代码将变量“stylesheets”设置为“[]”
这就是我要推测的地方。“indexOf”是数组对象的一种方法。也许JADE中构造的数组没有此方法,而node.js中构造的数组有此方法。这可以解释为什么您在尝试调用“stylesheets.indexOf(…)”时会出现错误
res.render('app.jade', {locals : locals});
- var stylesheets = stylesheets || [];