Javascript 添加和删除模板
假设我有这个“模型”Javascript 添加和删除模板,javascript,jquery,mongodb,meteor,Javascript,Jquery,Mongodb,Meteor,假设我有这个“模型” var lists = [ { title: 'Default title', image: '/img/default.jpeg', section: [ { name: 'Default Name', description: 'Default Description'
var lists = [
{
title: 'Default title',
image: '/img/default.jpeg',
section: [
{ name: 'Default Name',
description: 'Default Description'
}
],
activity: ['default']
}
];
以下是视图模板
<template name="main_list_view">
{{#each list.section}}
{{> section}}
{{/each}}
<a id="addSection" href='#'>Add Section</a>
</template>
<template name="section">
<li>{{section.name}}</li>
<li>{{section.description}}</li>
<a class="deleteSection" href='#'>Delete Section</a>
</template>
{{{#每个列表.节}
{{>节}
{{/每个}}
{{section.name}}
{{section.description}}
我需要帮助w的逻辑添加更多的部分和删除一个特定的部分从集合
我已经检查了mongoDB,看起来我必须使用addToset和$unset之类的东西来更新模型,但我真的只想从视图中删除它们,因为我希望默认模型始终保持不变
那么,我如何在用户单击Addcontent时删除模板并将其添加到视图中,以及在用户单击remove时删除特定视图?有没有流星般的方法?因此,用户单击addContent,如果单击remove,则会呈现或删除一个新的节模板。删除一个节模板应该足够简单。首先,在删除链接中添加节的id可能会有所帮助:
添加一个是另一回事,因为这完全取决于您单击addSection
链接时希望发生的事情。该链接是否呈现在提交时创建新节的表单?或者该链接的处理程序是否创建了一个节
对象并填充值
编辑
有人指出,章节
不是一个集合。我应该看到的。把它编成一个集合显然是解决这个问题的方法。因此,不是:
{{#each list.section}}
{{> section}}
{{/each}}
你应该:
{{#each sections list._id}}
{{> section}}
{{/each}}
在js文件中:
Template.main_list_view.helpers({
sections: function(list_id) {
return Sections.find({ list_id: list_id });
}
});
Template.section.events({
'click a.deleteSection': function(evt) {
var list = Lists.find($(evt.target).data('id'));
var section = { name: $(evt.target).data('name'), description: $(evt.target).data('description') };
sections = list.sections;
sections.splice(sections.indexOf(section), 1);
Lists.update(list._id, $set: { sections: sections });
}
});
或者,您可以将“section”模板向上移动到父级,然后将list_id作为数据属性添加到链接上:
{{#each list.section}}
<li>{{name}}</li>
<li>{{description}}</li>
<a data-id="{{list._id}}" data-name="{{name}}" data-description="{{description}}" class="deleteSection" href="#">Delete Section</a>
{{/each}}
是的,添加将添加一个新的节并填充值您的答案不起作用@samo,因为节不是集合,您不能调用节。删除像有嵌套模型,没有人有嵌套模型的好例子w meteorjs??我编辑了我的答案,以说明没有节集合的事实。我当然希望你有一个列表收集。。。
Template.section.events({
'click a.deleteSection': function(evt) {
var list = Lists.find($(evt.target).data('id'));
var section = { name: $(evt.target).data('name'), description: $(evt.target).data('description') };
sections = list.sections;
sections.splice(sections.indexOf(section), 1);
Lists.update(list._id, $set: { sections: sections });
}
});