セッション変数が変更されたときにブロックヘルパーを再レンダリングしたい。
UI.registerHelper "myHelper", () ->
this.changedSession = Session.get 'someSessionVariable'
return Template.myTemplate
ヘルパーは実際に実行されますが、ビューは更新されません。理想的には、ヘルパーがレンダリングする部分のみが再レンダリングされます (Template.myTemplate)。ただし、ページ全体を再レンダリングすることもオプションです。
これどうやってするの?
私の問題を説明する非常に単純なアプリ:
コーヒースクリプト:
if Meteor.isClient
Template.hello.greeting = () ->
Session.get "greeting"
UI.registerHelper "myHelper", (options) ->
this['greeting'] = Session.get 'greeting'
return Template.test
HTML:
<template name="hello">
{{greeting}}
{{#myHelper test="test" more="more"}}
{{/myHelper}}
</template>
<template name="test">
{{this.greeting}}
</template>
セッション変数を変更した場合。挨拶自体は更新されますが、挨拶を含むテンプレートは更新されません。
これはヘルパーでセッションを取得する流星の方法ではないことはわかっていますが、これをプロトタイピング フレームワークに使用しており、このヘルパーはヘルパーのデータ コンテキストを定義せずに任意のテンプレートで使用できます。