if (Meteor.isClient){
Template.parent.show = function(){
return Session.get('isShowing');
}
}
がアクセス権を持っている子テンプレートのどのような方法がありますそれ?
if (Meteor.isClient){
Template.parent.show = function(){
return Session.get('isShowing');
}
}
がアクセス権を持っている子テンプレートのどのような方法がありますそれ?
編集
あなたはどこでもあなたのhtmlでセッション値を使用できるようにするには、ユニバーサルハンドルヘルパーを作ることができる:
クライアントJS
Handlebars.registerHelper('session', function(key) {
return Session.get(key);
});
クライアントHTML
<template name="child">
{{#if session "show"}}
//Do something
{{/if}}
</template>
同様に、親テンプレートに{{session "show"}}
/{{#if session "show"}}
を使用して、Template.parent.show
ヘルパーを使用する必要はありません。
../
表記の使用について。特定のシナリオが動作しない場合があります:https://github.com/meteor/meteor/issues/563。基本的には{{#block helper}}では動作しますがテンプレートでは動作しませんが、サブテンプレートが含まれている場合はブロックヘルパーで動作します。
<template name="child">
{{#if ../show}}
Do something
{{/if}}
</template>
ハンドルバーのドキュメントでこれを見ていますが、これを流星で再現できますか?私が試してみると、コンソールにエラーが表示されます:「未知のエラー:多すぎる」..「セグメント」。私が理解している限り、/私たちが作業しているデータの親コンテキストを参照します:context = {name:John、posts:{post1:body1、post2:body2}}そして私たちは名前プロパティにアクセスするために../を使用できます。しかし私は../を使用して、まだアクセスしていないまったく新しいデータオブジェクトにアクセスすることはできないと思っています。少なくとも、それを動作させることはできません。 – J2K
はい、あなたは正しいです。 '../'表記は必ずしも常にサブテンプレートで動作するわけではありません。 Iveは別の解決策で答えを更新しました – Akshat
答えをありがとう。私が望んでいたものとまったく同じものではありませんでした(それが働くと../showは完璧です)が、これは有用でかなりきれいな仕事です。 – J2K
また、一般的なヘルパー登録することができます。
Template.registerHelper('isTrue', function(boolean) {
return boolean == "true";
});
をそして、ちょうどあなたのhtmlでそのようにそれを呼び出す:
<input type="checkbox" checked="{{isTrue attr}}"/>
私は、これはハンドルの質問の多くのだと思い –
ハンドルバーは '../ 'をサポートしていますが、どれくらい前に戻ってくるかわかりません – Swadq