Meteor 1.0.4アップデート:テンプレートレベルのサブスクリプションが利用可能になり、iron:routerまたはスタンドアロンサブスクリプションを使用するための推奨パターンが追加されました。
で呼び出されたすべてのサブスクリプションの準備ができTemplate.instance().subscriptionsReady()
たときにtrueを返す補完的な関数があります。this.subscribe
テンプレートのHTML内で、組み込みのヘルパーを使用できますTemplate.subscriptionsReady
。これは、サブスクリプションからロードされたデータに依存する場合に、テンプレートにロードインジケーターを表示するための簡単なパターンです。
例:
Template.notifications.onCreated(function () {
// Use this.subscribe inside onCreated callback
this.subscribe("notifications");
});
<template name="notifications">
{{#if Template.subscriptionsReady}}
<!-- This is displayed when all data is ready. -->
{{#each notifications}}
{{> notification}}
{{/each}}
{{else}}
Loading...
{{/if}}
</template>
ロードセクションは実際に新しいデータがあるページの部分にローカライズされるため、これはページ全体の一般的なロードテンプレートを使用するよりも優れています。
Pre-Meteor 1.0.4:
アイデアは、onReady関数をMeteor.subscribe
:に渡すことです。
Meteor.subscribe('tasks', function onReady() {
Session.set('tasksLoaded', true);
});
tasksLoaded
次に、テンプレートをセッション変数に依存させます。クライアントJavaScriptの場合:
Template.task_list.helpers({
tasksLoaded: function () {
return Session.get('tasksLoaded');
}
});
テンプレート内:
<template name="task_list">
{{#if tasksLoaded}}
{{#each tasks}}
{{> task}}
{{/each}}
{{else}}
<img src="http://viewvc.svn.mozilla.org/vc/addons/trunk/bandwagon/skin/images/spinner.gif?revision=18591&view=co&pathrev=18591">
{{/if}}
更新:iron-routerloading
を使用すると、サブスクリプションのロード中に表示されるテンプレートを指定する直接オプションがあります。