ReferenceError:Sails.js中未定义JST

时间:2014-01-01 16:03:52

标签: sails.js

我有一个ejs javascript模板:
/assets/linker/template

我改变了gruntfile.js中的行:
linker/**/*.htmllinker/**/*.ejs

我有下划线.js:
assets/linker/js

但是当我尝试时:
来自JST['assets/linker/templates/addUser.ejs']( obj )

app.js

我在控制台中收到此错误:
ReferenceError: JST is not defined

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我通过手动将JST链接到我的index.ejs文件来解决它。 所以我刚才补充道   <script type="text/javascript" src="/jst.js"></script> 我在sailsProject&gt; views&gt; home&gt; index.ejs中加载我的javascripts。 不漂亮,因为链接器应该完成这项工作,但现在它可以工作。 欢呼声

答案 1 :(得分:0)

管道

注入的模板文件在tasks/pipeline.js

中指定

默认设置为:

cx_Oracle

注入带有 .html 文件扩展名的assets/templates(或任何子目录)中的文件。

同时查看tasks/config/jst.js中的JST任务。它接受模板文件(来自pipeline.js)并将它们预编译到名为var templateFilesToInject = ['templates/**/*.html'] 的文件中。

只有完成其他任务后,sails-linker才会开始执行任务。 tasks/config/sails-linker.js获取由JST任务生成的jst.js,并将其包含在jst.js.tmp/public/index.htmlviews/**/*.html中的模板开始和模板结束标记中。

因此,客户端模板的默认管道是:

  1. views/**/*.ejs预编译为templates/**/*.html
  2. jst.jsjst.jsindex.html views/**/*.htmlviews/**/*.ejs
  3. 之间加入<!--TEMPLATES-->

    自定义示例

    可以更改所有此默认配置以满足您的需要。例如,要使模板具有不同的扩展程序或多个扩展程序,请修改<!--TEMPLATES END-->中的templateFilesToInject

    tasks/pipeline.js

    或者只有在具有评论let templateFilesToInject = [ 'vendor/templates/vendor_template.html', 'templates/**/*.ejs', 'templates/**/*.html' ] 的特定视图时才注入模板,请在<!--TPL--><!--END TPL-->中修改devTpl配置:

    tasks/config/sails-linker.js