2014-06-14 2 views
1

Meteor 스페이스 바에 템플릿 함수 반환 값을 저장하는 방법이 있습니까? 나는 더 잘 설명 할 것이다.함수 대신에 템플릿에있는 Meteor 변수

예를 들어 이벤트 시작 여부를 알아야한다고 가정 해 봅니다. client.js에 나는 것 :

Template.event.isEventStarted = function(eventId) { 
    var event = Events.findOne({_id: eventId}); 
    return Events.isStarted(event); 
} 

한다고 가정은 지금은 "이벤트"템플릿 여러 번에서 "isEventStarted"에 접근 할 필요가있다. 하위 템플릿에서 액세스해야합니다. 쿼리는 "isEventStarted"가 호출 될 때마다 실행되므로 "isStarted"함수도 호출됩니다. 그들은 클라이언트 측을 실행하지만 잠재적으로 많은 하위 템플릿이있는 많은 이벤트 템플릿을 가질 수 있습니다.

답변

1

기본적으로는 UI.emboxValue이 설계되었습니다. 다음을 시도하십시오.

Template.event.isEventStarted = function (eventId) { 
    return UI.namedEmboxValue(eventId, function() { 
    /* ... */ 
    }, EJSON.equals); 
}; 

이렇게하면 해당 데이터가 변경 될 때만 쿼리가 다시 계산됩니다.

+0

emboxValue 함수 안에 컬렉션에 액세스 할 수없는 것 같습니다. 그래서 "lib"폴더 아래에있는 내 콜렉션 파일을 옮기려고 시도했으며 함수에서 "Events"콜렉션을 사용할 수있었습니다. 그러나 "eventId"는 "정의되지 않음"으로 유지됩니다. {{#if isEventStarted _id}}와 (과) 템플릿에서 이벤트 ID를 전달합니다. – user1427835

+0

안녕하세요, 맞습니다. 방금 대답을 업데이트했습니다. –

관련 문제