2017-05-15 4 views
1

hapi.js에 ejs을 사용하여 포함 된 레이아웃에서 렌더링되는 템플릿에 정보를 정의하고 싶습니다. 예를 들어 :hapi.js ejs 레이아웃에서 여러 콘텐츠 영역을 얻는 방법은 무엇입니까?

layout.html

<html> 
    <head> 
     <title><%- contentFor('title') %></title> 
    </head> 
    <body> 
     <%- content %> 
    </body> 
</html> 

index.html을

contentFor('title', 'My title') 

<h1>My content</h1> 

작동하지만, 다른 레이아웃의 내용이 템플릿에 정의되어 있는지 나에게 중요하다 , 경로 수준에서 전달되지 않았습니다. 이것이 가능한가?

답변

1

그래, 이건 전혀 분명하지 않습니다.

:

  1. 예를 들어 레이아웃

에 해당 개체의 속성을 참조하는 템플릿

  • 에서 해당 개체를 수정 기본 컨텍스트 개체
  • 설정 : 나는이 작업을 수행 할 수 있었다

    기본 컨텍스트 개체 설정

    당신이 볼 수 있듯이, 당신은 레이아웃에 텍스트 또는 전체 태그를 전달할 수 있습니다

    // layouts/layout.html 
    <html> 
        <head> 
         <title><%- layoutContent.title %></title> 
         <%- layoutContent.meta %> 
        </head> 
        <body> 
         <%- content %> 
        </body> 
    </html> 
    

    server.register(plugins, (err) => { 
        ... 
        server.views({ 
         context: { 
          layoutContent: {} 
         } 
        }) 
    } 
    

    레이아웃에 객체를 참조하는 템플릿

    // templates/my_template.html 
    <% 
        layoutContent = { 
         title: 'My Title' 
         meta: '<meta name="description" content="my content">' 
        } 
    %> 
    

    에서 개체를 수정 . 희망이 도움이됩니다.