템플릿 도우미에서 Meteor 메서드 사용
Meteor에서 템플릿 도우미는 템플릿에 반응형 데이터를 제공합니다. 일반적인 질문이 생깁니다. 이러한 도우미 내에서 Meteor 메서드에 직접 액세스할 수 있습니까?
다음 코드를 고려하세요.
<code class="javascrip">// server-side method Meteor.methods({ // viewTest method to return a string viewTest: function(str) { return str; } }); // client-side helper Template.helloWorld.helpers({ // attempt to call 'viewTest' method txt: function() { return Meteor.call('viewTest', 'Hello World.'); } });</code>
템플릿을 렌더링하려고 하면 도우미 함수에서 오류가 발생합니다. 메소드가 존재하지 않음을 나타냅니다. 이는 Meteor가 클라이언트에 메소드를 등록하기 전에 템플릿 렌더링을 시도하기 때문입니다.
대체 구현
Meteor 0.9.3.1에는 이 문제를 해결하는 업데이트된 접근 방식이 있습니다. 문제:
<code class="javascript">// client-side template Template.helloWorld.helpers({ txt: function() { return Template.instance().myAsyncValue.get(); } }); // client-side 'created' callback Template.helloWorld.created = function() { // create a ReactiveVar instance and attach it to the template this.myAsyncValue = new ReactiveVar("Waiting for response from server..."); // call the 'getAsyncValue' method and update the ReactiveVar when the callback fires Meteor.call('getAsyncValue', (err, asyncValue) => { if (err) console.log(err); else this.myAsyncValue.set(asyncValue); }); };</code>
이 솔루션은 템플릿 인스턴스에 연결된 반응형 데이터 소스인 ReactiveVars를 사용합니다. 메소드 결과를 ReactiveVar에 저장하고 이를 콜백에서 업데이트함으로써 도우미는 반환된 값에 반응적으로 액세스할 수 있습니다.
위 내용은 템플릿 도우미에서 직접 Meteor 메서드를 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!