2014-07-06 6 views
0

IronRouter 경로에 대한 서로 다른 호출간에 구독을 열어 두는 방법은 무엇입니까?가입 경로를 열어 두는 방법은 무엇입니까?

그래서이 될 것이라고 잡지 발행/페이지

content/:issue/:page 

같은 계층 구조를 가지고 응용 프로그램을 가지고 :

content/may/page1 
content/may/page2 
content/may/page3 

나는 "일"에 대한 모든 내용을로드하고 싶습니다 라우터 내에서 문제가 발생하고 페이지가 변경되면 구독 취소가 발생하지 않습니다. 데이터가 다시 연결될 때 지연으로 인해 발생한다고 생각되는 앱이 깜박입니다.

저는 현재 간단한 Content.find ({})가 있지만 콘텐츠가 변경되지 않아도 unsub/pub/sub 핸드 셰이크에 의해 발생하는 것처럼 보이는 지연이 있습니다.

업데이트 : IronRouter 경로 외부에서 구독을 완전히 이동했는데 이제는 "끈적"으로 보입니다. 그러나 구독이 어딘가에서 구독 취소되는 것을 상상해보십시오. 따라서 이것이 최상의 솔루션인지 확실하지 않습니다. 또한 이제는 글로벌 구독입니다. "반면에 :issue 매개 변수가 해당 경로에서 변경된 경우에만 pub/unsub을 제어 할 수 있기를 원합니다.

+0

[subscriptions-manager] (http://meteorhacks.com/subscriptions-manager-is-here.html)를 참조하십시오. –

+0

감사합니다, 그것에 대해 몰랐고 내가 원하는 것을하는 것처럼 보입니다. Arunoda 기계입니다! 또한 보이지 않는 것에도 불구하고 구독이 폐쇄되고 있다는 의심을 확인합니다. – dcsan

답변

0

구독자를 템플릿 수준에서 처리하는 것이 라우터에서 처리하는 것보다 훨씬 낫습니다. .

당신이 라우터를 처리 할 때 페이지 만 가입 후로드되는 때문에 준비가 된 것입니다 응용 프로그램이 덜 반응 느끼게 어떤

템플릿 :..

<template name="example"> 
    {{#with data=getData}} 
     {{#if $not data.ready}} 
      {{> spinner}} Loading... 
     {{/if}} 
    {{/with}} 
</template> 

템플릿 도움말 예 :

Template.example.getData = function() { 
    var ready = Meteor.subscribe('someSubscription', this.issueId).ready(); 
    var data = collections.example.find(); 

    return { 
     ready: ready, 
     data: data 
    }; 
}; 

이 경우 응답 성이 향상됩니다. 사용 된 디자인으로 문제를 해결하기 위해 캐싱과 같은 방법을 사용하기 전에 느린/나쁨/응답이없는 디자인을 피하는 것이 항상 좋습니다.

관련 문제