我想让每个结果都可以展开,以显示特定项目的额外细节或编辑表单。
寻找类似的问题,我发现了这一点 Template reuse in meteor
我遇到的问题是如果我展开一个会扩展每个结果:(
这是我使用atm的代码:
$(document).ready(function(){
Session.set('edit', false);
});
Template.editdisplay.events({
'click .edit' : function(){
Session.set('edit', true);
}
});
Template.editdisplay.edit = function(){
if(Session.get('edit')){
return true;
}
else{
return false;
}
};
HTML:
<template name="editdisplay">
result..
{{#if edit}}
{{> editform}}
{{/if}}
</template>
答案 0 :(得分:0)
那么,您使用一个反应变量来控制每个项目的扩展 - 您期望的其他行为是什么?您需要为每个模板实例创建单独的变量。最简单的例子:
Template.editdisplay.events({
'click .edit': function(e, t) {
Session.set('edit-' + t.data._id, true);
},
});
Template.editdisplay.edit = function() {
return !!Session.get('edit-' + this._id);
};
答案 1 :(得分:0)
虽然它不是最优雅的解决方案,但您可以将当前编辑项目的ID存储在会话变量中,并使用以下内容:
{{#if equals _id editingId}}
{{> editForm}}
{{/if}}
并且js看起来像这样:
Template.editDisplay.events({
'click .edit':function(event, template)->
Session.set("editingId", template.data._id);
})
Template.editDisplay.editingId = function(){
return Session.get("editingId");
}
equals是一个简单的帮手:
UI.registerHelper("equals" , function(val1, val2){
return val1 === val2;
})
并避免实时更新问题:
Template.editDisplay.created = function(){
Session.set("editingId");
}