Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 流星行结果单击展开_Templates_Meteor_Expand - Fatal编程技术网

Templates 流星行结果单击展开

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

我想让每个结果都可以扩展,以显示额外的细节或编辑特定项目的表单

寻找类似的问题,我发现了这个

我遇到的问题是,如果我展开一个结果,则会使用它来展开每个结果:(

这是我使用atm的代码:

$(文档).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没有任何功能,我要么全部打开,要么一个都不打开:/