2016-08-31 1 views
0

지금까지 내가 좋아하는 Sail.js에 젖어 가고 있는데, 간단한 질문에 빠져있다. 자바 스크립트 기능을 가지고 싶다면 특정보기에서 어디에서 호출합니까? Sails.js를 사용하는 EJS 템플릿의 맞춤 자바 스크립트

//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의 단점은이 블록을 지원하지 않습니다 AFAIK 것입니다. 그것은 베어 메탈입니다. 따라서 모든 스크립트를 기본 레이아웃 파일에 넣어야하며 스크립트는 필요하지 않은 페이지에 배치됩니다. 그러나 비취 같은 돛에 다른 템플릿 엔진을 구성 할 수 있습니다. Jade는 재정의하거나 확장 할 수있는 블록을 지원합니다. 다음은 비취 블록의 예입니다. https://stackoverflow.com/a/22748166/401025

+0

고마워요! SWIG로 전환 –

관련 문제