Templates 流星行结果单击展开
我想让每个结果都可以扩展,以显示额外的细节或编辑特定项目的表单 寻找类似的问题,我发现了这个 我遇到的问题是,如果我展开一个结果,则会使用它来展开每个结果:( 这是我使用atm的代码:Templates 流星行结果单击展开,templates,meteor,expand,Templates,Meteor,Expand,我想让每个结果都可以扩展,以显示额外的细节或编辑特定项目的表单 寻找类似的问题,我发现了这个 我遇到的问题是,如果我展开一个结果,则会使用它来展开每个结果:( 这是我使用atm的代码: $(文档).ready(函数(){ Session.set('edit',false); }); Template.editdisplay.events({ 'click.edit':函数(){ Session.set('edit',true); } }); Template.editdisplay.edit
$(文档).ready(函数(){
Session.set('edit',false);
});
Template.editdisplay.events({
'click.edit':函数(){
Session.set('edit',true);
}
});
Template.editdisplay.edit=函数(){
if(Session.get('edit')){
返回true;
}
否则{
返回false;
}
};
HTML:
后果
{{{#如果编辑}}
{{>editform}
{{/if}
好吧,您可以使用一个被动变量来控制每个项目的扩展–您还希望看到什么其他行为?您需要为每个模板实例创建一个单独的变量。最简单的示例:
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);
};
虽然这不是最优雅的解决方案,但您可以将当前编辑项的id存储在会话变量中,并使用如下方式:
{{#if equals _id editingId}}
{{> editForm}}
{{/if}}
Template.editDisplay.events({
'click .edit':function(event, template)->
Session.set("editingId", template.data._id);
})
Template.editDisplay.editingId = function(){
return Session.get("editingId");
}
js看起来是这样的:
{{#if equals _id editingId}}
{{> editForm}}
{{/if}}
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");
}
它不工作:/我需要在html中添加其他内容吗?比如{{{if edit}u id},没想到会这么简单。^^^或者我需要在集合中使用编辑布尔值吗?我假设模板的数据上下文定义了
\u id
参数,是这样吗?尝试记录t.data.\u id
和这两个参数。\u id
在使用之前,值是否正确?不确定您在那里谈论的是什么,但在m中y remove函数我只使用了(onclick函数)Collection.remove(this.\u id);
我想你可以做一个简单的例子来说明这是如何工作的,javascript和html。atm没有任何功能,我要么全部打开,要么一个都不打开:/