ホームページ >ウェブフロントエンド >jsチュートリアル >テンプレート ヘルパーから Meteor メソッドを直接呼び出すことはできますか?
テンプレート ヘルパーでの 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 中国語 Web サイトの他の関連記事を参照してください。