同じページの複数の(任意の数の)場所に同じハンドルバーテンプレートをレンダリングしています。各テンプレート内で、divの表示を切り替えるボタンが必要です。この状態をで保存するとSession.set
、1つのボタンをクリックすると、すべてのテンプレートインスタンス化のすべてのdivが明らかに切り替わりますが、これは望ましくありません。
テンプレートインスタンスのデータコンテキスト(およびコールバックにバインドさthis.data
れている)に状態を保存できますが、これには2つの問題があります。Template.myTemplate.rendered
Template.myTemplate.created
this.data
はリアクティブなデータソースではないため、divに伝播されません- ( meteor-core
Template.myTemplate.events
で説明されているように)のテンプレートインスタンスにアクセスできません
最後に、どういうわけかそれをコレクションに保存することができました。しかし、レンダリングされた各テンプレートの状態を一意に識別するにはどうすればよいでしょうか。jQueryにはハッキーな方法もあるかもしれませんが、それはリアクティブテンプレートで動作するはずのMeteorアプリを開発したい方法ではありません。特に、そのテンプレートがより複雑になると。
何かが足りないのでしょうか、$scope
それともテンプレートのインスタンス化ごとに渡されるAngularJSのコントローラーに相当するものが本当にないのでしょうか?
更新:私はこのようなことを考えていました。
template.html:
<template name="jsonObject">
<input type="button" />
<div class="{{hidden}}">content</div>
</template>
client.js:
Template.jsonObject.hidden = function(){
var ret = "";
if (this._hidden) {
ret = "hidden";
}
return ret;
};
Template.jsonObject.events({
'click input' : function(event, template){
template.data._hidden = true;
}
});