Javascript Meteor:两个项目可以交换的名称列表

Javascript Meteor:两个项目可以交换的名称列表,javascript,meteor,Javascript,Meteor,我开始学习Meteor和Javascript,并尝试创建一个应用程序,其中有两个名称列表(是列表和否列表)。我希望用户能够在任一列表中选择多个项目,然后单击按钮将所选项目切换到相反的列表 我最初是根据Meteor的排行榜示例设计的,但后来我意识到这不允许多选,也不能真正适应我想要的多选功能 因此,有两个问题: 为了做到这一点,我在名称字典中添加了另一个变量,这样每个名称都有一个“selected”值,该值为true或false。然后,当人们点击“切换”按钮时,css文件和事件中的高亮显示只会检

我开始学习Meteor和Javascript,并尝试创建一个应用程序,其中有两个名称列表(是列表和否列表)。我希望用户能够在任一列表中选择多个项目,然后单击按钮将所选项目切换到相反的列表

我最初是根据Meteor的排行榜示例设计的,但后来我意识到这不允许多选,也不能真正适应我想要的多选功能

因此,有两个问题:

  • 为了做到这一点,我在名称字典中添加了另一个变量,这样每个名称都有一个“selected”值,该值为true或false。然后,当人们点击“切换”按钮时,css文件和事件中的高亮显示只会检查dict中的元素是否“selected”=True。这是实现此功能的好方法/可行方法吗

  • Meteor排行榜示例使用Session.get、.set和.equal设置并检查“selected_player”。我需要在Javascript中使用这些函数吗?为什么我不能使用像individual.selected=0、“if(individual.selected==1)”之类的东西


    • 回答您的第一个问题:是的,这是一个很好的方法

      您应该使用
      会话
      ,因为它是Meteor提供给您的反应式数据源。阅读以了解更多有关此操作的信息。我还建议观看《流星》的原创剧集,了解该课程的帮助。简单地说,如果您编写了一个从Session.get读取的模板或帮助程序,则每当更新同一会话密钥时,该模板将自动重新呈现

      例如,要试用它,可以使用以下代码,如果单击按钮,div的类将在selected和empty之间来回交换:

      在客户端javascript中:

      Template.list.selected = function() { return Session.get("selected") ? "selected" : ""; }
      Template.list.events({ "click button": function() { Session.set("selected", !Session.get("selected")); });
      
      在模板中:

      <template name="list">
        <div class="{{selected}}"></div>
        <button></button>
      </template>