2013-09-26 68 views
2

函數,我想渲染一個帶有返回數據的EJS-Partial或Template,最後將它附加到DOM。我包含ejs-partial腳本標記(sails.js)

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> 

的代碼片段有沒有人對我的問題的解決方案?非常感謝你

回答

3

下面是一個例子,可以幫助你到你想去的地方。

您可以將模板放在/ assets/linker/template目錄中。鏈接器目錄是在您使用--linker參數創建新的sails應用程序時創建的。因此,舉例來說,假設我有一個名爲模板文件:用下面的代碼,將用戶添加到現有的表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> 

我現在可以使用該模板,在這個例子中,在包含在/資產/連接/ JS用以下單獨的JavaScript文件:

$('tr:last').after(

    JST['assets/linker/templates/addUser.ejs'](obj) 
); 

所以這個拿模板和使用OBJ,我通過與生產是被在DOM附加所需的HTML模板。

編輯

此外,進入Gruntfile.js圍繞線80應該是以下幾點:

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

變化*。html的爲* .ejs。

最後,將underscore.js庫添加到assets/linker/js目錄。

鏈接器目錄結構也很重要。我相信Gruntfile.js是相同的,無論您是否使用--linker指定,請使用js,styles和templates的子目錄關閉名爲linker的資產目錄。在新的鏈接目錄下移動assets/js assets/styles下的現有文件。

+0

謝謝你的回答!我試過你的解決方案,但控制檯告訴我JST沒有定義 – vacetahanna

+1

當你最初創建你的項目時,你是否使用了--linker參數?我的猜測是,咕嚕聲沒有找到模板。 – JohnGalt

+0

好的,不,我沒有使用--linker參數。但是我在我的Gruntfile中看到,它只加載帶有* .html的模板。我將更改擴展名並查看它是否可以工作 – vacetahanna