我是编程和学习JavaScript和Sails JS的新手。到目前为止,我确实喜欢它,但遇到了一个我不明白的问题。如果我使用错误的术语,请原谅我,我没有编程背景。
我在Sails v0.12.1(干净安装)和OSX上运行(如果这很重要)
在/ assets / templates中我创建了一个名为'testTemplate.ejs'的模板文件。其中只包含带有简单文本的h3标记:
<h3>This is the template</h3>
在我的/assets/js/app.js中,我有一个简单的jQuery“调用”来插入我的客户端页面中的模板:
$('tr:last').after(
JST['assets/templates/testTemplate.ejs'](obj)
);
到目前为止一切顺利。我的应用程序适用于所有视图等,但到达此点时会出现错误。错误告诉我它找不到第一个__t(第4行)位于/jst.js中的变量'_':
this["JST"] = this["JST"] || {};
this["JST"]["assets/templates/addUser.ejs"] = function(obj) {
obj || (obj = {});
var __t, __p = '', __e = _.escape;
with (obj) {
__p += '<h3>Dit is de template</h3>';
}
return __p
};
我尝试使用以下命令安装underscore.js:
npm install underscore --save
但这并没有什么不同。我也尝试使用html而不是ejs作为模板(也改变了管道)。
我不知道为什么我会收到此错误:
ReferenceError: Can't find variable: _
或我应该如何/可以解决它。
有人可以帮助我吗?
答案 0 :(得分:1)
感谢@Armfoot,我找到了解决方案。
通过npm安装underscore.js并没有按预期工作。但是,当我手动下载underscore.js文件并将其放在/ assets / js /目录中时,然后抬起帆,错误消失,模板正确加载。
必须是我缺少的知识才能在两天内找到答案,这很容易解决。再次感谢Armfoot指出我正确的方向。
答案 1 :(得分:0)
也许下面没有正确导入或引用underscore.js,尝试在加载的代码中找到类似于这一行的内容:
<script src="YOURPATH/underscore.js"></script>
或者在使用下划线之前尝试添加它:
$.getScript("https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js", function( data, textStatus, jqxhr ) {
console.log( data ); // Data returned
console.log( textStatus ); // Success
console.log( jqxhr.status ); // 200
console.log( "Load was performed." );
});
根据他们的文档,您需要在escape function中添加字符串参数。 E.g:
_.escape('Curly, Larry & Moe');
=> "Curly, Larry & Moe"