2017-11-08 11 views
0

사용자가 템플릿 (예 : I)으로 리디렉션되는 상황이 있습니다. 템플릿 I에는 템플릿을 렌더링해야하는지 또는 다른 곳으로 리디렉션해야 하는지를 결정하는 조건이 있습니다.Meteor는 조건에 따라 템플릿 렌더링을 방지합니다.

내가 지금하고있는 방법은 Template.I.onCreated()에서 해당 조건을 확인하고 그 조건이 참이면 window.location.href을 새 URL에 넣는 것입니다.

그러나 때로는 리디렉션 전에 템플릿 I이 화면에 잠깐 나타납니다.

나는이 일을 막을 수있는 방법이 필요합니다. 나는 onRendered() 전에 onCreated()가 발생하지 않도록해야한다고 생각했습니다. 그러나 여전히 이것은 효과가없는 것 같습니다.

+1

라우터에서이 작업을 더 잘 수행하십시오. –

+0

@MichelFloyd가 정확합니다. 수동으로 창 위치를 변경하는 대신 라우터가이를 제어하도록하는 것이 바람직합니다. 당신이 검사하고있는 상태를 설명해 주시겠습니까? – chazsolo

+0

@MichelFloyd 리디렉션되는 페이지가 완전히 새로 고침 될 때까지로드되지 않는 일부 스크립트가 포함 된 새 템플릿에 있기 때문에 라우터를 사용하고 싶지 않습니다. 그것은 철분 라우터는 우리가 (또는 템플릿 조각에 포함 된 스크립트를 실행하게하지 않는 것) – rahulserver

답변

3

조건부 불꽃에서 템플릿을 렌더링하는 가장 간단한 방법은 {{# if}}으로 포장하는 것입니다

<template name="parentTemplate"> 
{{#if someCondition}} 
    {{> childTemplate }} 
{{/if}} 
</template> 

당신은 someCondition에 대한 truthy 또는 falsy 값을 반환 JS에서 도우미를 정의 할 수 있습니다. onCreated에서 아무 것도 할 필요가 없습니다.

window.location.href을 통해 URL을 변경하는 것은 매우 바람직하지 않습니다. 이렇게하면 모든 구독을 포함하여 전체 앱이 다시로드됩니다.

+0

Iron router의 onBeforeAction에 대한 의견에 귀하의 제안을 사용하여 수정했습니다. 그에 따라 답변을 업데이트 할 수 있으며 upvote를 수락합니다. – rahulserver

+0

그 사람은 @chazsolo에 속합니다! –