2016-08-31 53 views
0

我已經弄溼了Sail.js,它到目前爲止我都很喜歡,但是我被困在一個簡單的問題上:如果我有一個JavaScript函數,我只想運行在一個特定的觀點,我在哪裏調用它?使用Sails.js在EJS模板中自定義Javascript

一個非常簡單的例子是這樣的:

//contact.ejs 
    <div id="contact"></div> 
    <script> 
    renderContact(); 
    </script> 

假設renderContact在該網站我的主人JS文件中定義的,並且確實聽起來像什麼:創建於<div id='contact'></div>聯繫人列表。

當然,該主JS文件以及所有供應商JS不會被加載,直到此腳本標記被注入到layout.ejs之後纔會被加載,因此該函數將不被定義。我總是可以在本地等待頁面加載,如下所示:

document.addEventListener("DOMContentLoaded", function(event) { 
    renderContact(); 
}); 

但是,這看起來像一個可怕的解決方案。

我意識到Sails與Angular,React等功能強大的集成,但我首先想要理解在調用一個頁面之前調用JS的基本方法。 DOM加載後,只有在某些頁面上運行某些函數時,必須有更好的方法嗎?

回答

0

所以對於renderContact工作就應該是這樣的:

<html> 
    <head></head> 
    <body> 
     HTML 
     <script src="master.js"></script> 
     <script> 
     (function() { 
      renderContact(); 
     })(); 
     </script> 
    </body> 
</html> 

EJS的缺點是,據我所知它不支持塊。這是一種裸機。因此,您必須將所有腳本放在主佈局文件中,腳本將放在不需要的頁面上。但是你可以在帆中配置其他模板引擎,比如玉。 Jade支持您可以覆蓋或擴展的塊。這裏有一個玉石塊的例子:https://stackoverflow.com/a/22748166/401025

+0

謝謝!切換到SWIG –

相關問題