与えられた:
<template name="child">
<button class=".child.button">Click Me</button>
</template>
<template name="parent">
{{#each children}}
{{> child }}
{{/each}}
</template>
親オブジェクトにアクセスできる子テンプレートのボタンにイベントをリンクできるようにしたいと思います。
可能な解決策:
親をdomに保存して、次のようにすることができます:
Template.child.events({
'click .child.button': function (event, template) {
console.log('In this context \'this\' is the CHILD');
// I want the parent object
// I could pull a ref from the Dom? Seems messy.
var parentId = $(event.currentTarget).closest('.parentClass').data('id');
// Do something for this child using parent here
return false;
}
});
または、親をセッション var に保持し、そこからプルすることもできます。
Router.map(function() {
this.route('parent', {
path: '/parents/:_id',
data: function () {
// Get the current parent and put it into the session
var thisparent = Parents.findOne(this.params._id);
Session.set('currentParent', thisparent);
return {
parent: thisparent
};
}
});
});
その後:
Template.child.events({
'click .child.button': function (event, template) {
console('the parent is: ', Session.get('currentProject'));
return false;
}
});
しかし、理想的には、よりクリーンなソリューションを好み、これが可能であるように感じます。