javascript - 使用 Meteor session 切换模板

标签 javascript session meteor

我是 JavaScript 和 Meteor 的新手,在尝试为列表项创建编辑功能以便能够修改列表项的属性(来自 Mongo 文档)时有点卡住了。如果我将 editMode 设置为项目本身的 bool 属性,我可以让它工作,但我希望它是本地的和临时的,而不是与文档本身一起存储。

看看下面的代码,你会发现我还是一头雾水,还没有完全理解我在做什么,但你应该能够理解我想做什么:)

代码有点在那里,但我试图根据切换编辑按钮来连接 session 中的更改,以获取要呈现的编辑模式模板。这是我所拥有的(精简为相关内容):

// Item template

<template name="item">
  <div class="item">
    <span>{{itemText}}</span>
    <span class="glyphicon glyphicon-pencil item-edit" aria-hidden="true"></span>
  </div>
  <div class="mod-table">
    {{#if this.editMode}}
      {{> modTable}}
    {{/if}}
  </div>
</template>

// Associated .js file

Session.set(this.editMode, false);

Template.item.events({
  'click .item-edit': function() {
    if (this.editMode) {
      Session.set(this.editMode, false);
    } else {
      Session.set(this.editMode, true);
    }
  }
});

最佳答案

不要使用 Session 变量,因为它们是全局变量,因此被认为是不好的做法,您应该使用绑定(bind)到项目模板的 ReactiveVar

项目.html :

<template name="item">
  <div class="item">
    <span>{{itemText}}</span>
    <span class="glyphicon glyphicon-pencil item-edit" aria-hidden="true"></span>
  </div>
  <div class="mod-table">
    {{#if editMode}}
      {{> modTable}}
    {{/if}}
  </div>
</template>

项目.js :

Template.item.created=function(){
  this.editMode=new ReactiveVar(false);
};

Template.item.helpers({
  editMode:function(){
    return Template.instance().editMode.get();
  }
});

Template.item.events({
  'click .item-edit': function(event,template) {
    var editMode=template.editMode.get();
    template.editMode.set(!editMode);
  }
});

不要忘记meteor add reactive-var到你的项目中!

关于javascript - 使用 Meteor session 切换模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909787/

相关文章:

php - 读PHP Session需要 `htmlspecialchars()`吗?

javascript - Marionette View 的正确 View 生命周期是什么?

javascript - 点击按钮时添加新的chart.js,但得到 'Cannot read property ' getContext' of null'

javascript - window.open MS Edge/IE 性能低下

javascript - 在 jquery/javascript 中获取、设置 session 值

java - 在特定的 Liferay Web 内容结构上设置 session

javascript - Meteor - 无法在订阅中传递变量

arrays - 我可以检查是否仅在某个字段值尚未填充时才推送值吗?

javascript - 将数据保存到localstorage,通过innerHTML显示,如果数据中没有内容,则显示span(Visitors)的原文

mongodb - 在 Meteor 中实现全局搜索(在多个集合中搜索)的最佳方法是什么