Meteor 重新呈现模板不会';t不允许我永久更改元素';什么课?

Meteor 重新呈现模板不会';t不允许我永久更改元素';什么课?,meteor,Meteor,我有一个可排序的列表 <template name="the_playlist"> {{#each main_list}} <li id="{{index}}" class="list_element"> <div class="next_song">...</div> <div class="destroy">...</

我有一个可排序的列表

<template name="the_playlist">
        {{#each main_list}}
          <li id="{{index}}" class="list_element">
                 <div class="next_song">...</div>   
                 <div class="destroy">...</div>
                 <div class="element_style">{{song_title}}</div>
          </li>
        {{/each}}
</template>
我使用的是可排序插件,更重要的是它的
update
回调,每当用户更改列表的位置或向列表中添加元素时,它都会更新

  $(function() {
    $( "#playlist" ).sortable({
    update: function(){
    Template.list.updateList(); //MODIFIES DB CONTENTS, AND MAIN_LIST's VALUES CHANGE
     }});
    $( "#playlist" ).disableSelection();
  });
*问题:*如果一个页面在加载时已经有列表元素,我只想添加一个类来隐藏(
.addClass(“hide”)
)页面上当时的每个
下一个
元素。此*仅在通过调用上面的
Template.list.updateList
更改主\u列表*之前有效,之后,添加的类将自动消失-很可能是由于正在进行的重新呈现,因为主\u列表取决于db更改

下面是我用来尝试和实现这一点的JQuery代码片段

$("#playlist li .next_song").each(function(){
   $(this).addClass("hide_song");
})

您是否可以确定助手函数中是否会出现这种情况

Template.the_playlist.helpers({
    'list_elements_exist': function() {
        return (!!$('#playlist li').length);
    }
}
然后,您可以直接将逻辑插入模板:

<div class="next_song{{#if list_elements_exist}} hide_song{{/if}}">...</div>
。。。
老实说,我不能100%确定这是否会随应用程序的结构而变化。如果它不能正常工作,我将引入一个新的会话布尔值,
list\u elements
,其值由上面的helper函数返回。在事件处理程序或
创建的
回调中更新其值应该相当容易,以使其跟踪列表中是否有任何项,这将保证列表按要求呈现,而不管其他依赖项如何更改

<div class="next_song{{#if list_elements_exist}} hide_song{{/if}}">...</div>