Данный:
<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;
}
});
но в идеале я бы предпочел более чистое решение, и мне кажется, что это возможно.