包括ejs-partial脚本标记(sails.js)

函数,我想渲染一个带有返回数据的EJS-Partial或者Template,最后把它附加到DOM。 我试了一下

var html = <%- partial('comment') %>" 

但是这给了我一个错误,我试着用这样的EJS模板

 var html = new EJS({url: '/comment.ejs'}).render(comment); 

但在这里我有问题,代码不能识别视图文件夹,也不是资产文件夹,我也试图复制我的部分文件。

这里是我的ajax函数的代码片段

 <script> function postComment(){ if ($('#inputContent').val() != ''){ $.post( "/comment/create/", $('#commentForm').serializeArray(), function(comment) { //var html = new EJS({url: '/comment.ejs'}).render(comment); //var html = "<%- partial('comment') %>"; $(html).appendTo('.comments').hide().fadeIn(2000); $('#inputContent').val(''); }); } } </script> 

有任何人解决我的问题? 非常感谢你

这里有一个例子可能会帮助你到达你想去的地方。

您可以将模板放在/ assets / linker / template目录中。 链接器目录是在使用–linker参数创build新的sails应用程序时创build的。 所以,比方说,我有一个名为addUser.ejs的模板文件,下面的代码将用户添加到现有的表中:

 <tr data-id="<%- user.id %>" data-model="user"> <% if (user.online) { %> <td><img src="./images/icon-online.png"></td> <% } else { %> <td> <img src="./images/icon-offline.png"></td> <% } %> <td><%= user.id %></td> <td><%- user.name %></td> <td><%- user.title %></td> <td><%- user.email %></td> <% if (user.admin) { %> <td> <img src="/images/admin.png"></td> <% } else { %> <td> <img src="/images/pawn.png"></td> <% } %> <td><a href="/user/show/<%- user.id %>" class="btn btn-small btn-primary">Show</a></td> <td><a href="/user/edit/<%- user.id %>" class="btn btn-small btn-warning">Edit</a></td> <td><form action="/user/destroy/<%- user.id %>" method="POST"> <input type="hidden" name="_method" value="delete"/> <input type="submit" class="btn btn-sm btn-danger" value="Delete"/> <input type="hidden" class="_csrf" name="_csrf" value="<%- _csrf %>" /> </form></td> </tr> 

我现在可以使用该模板,在这个例子中,在包含在/ assets / linker / js中的单独的javascript文件中使用以下内容:

 $( 'tr:last' ).after( JST['assets/linker/templates/addUser.ejs']( obj ) ); 

所以这取得了模板,并使用我通过与模板传递的obj产生所需的html被附加到DOM。

编辑

另外,进入80行左右的Gruntfile.js应该如下:

 var templateFilesToInject = [ 'linker/**/*.html' ]; 

将* .html更改为* .ejs。

最后,将underscore.js库添加到您的assets / linker / js目录。

具有链接器目录结构也很重要。 我相信Gruntfile.js是相同的,无论你是否使用–linker指定,所以build立一个名为链接器的资产目录与子目录的JS,样式和模板。 在新的链接目录下移动assets / js assets / styles下的现有文件。