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 });
      }
    });