使用 Meteor 会话切换模板
Using Meteor sessions to toggle templates
我是 JavaScript 和 Meteor 的新手,在尝试为列表项创建编辑功能以便能够修改列表项的属性(来自 Mongo 文档)。如果我将 editMode 设置为项目本身的布尔值 属性,我可以让它工作,但我希望它是本地的和临时的,而不是与文档本身一起存储。
看看下面的代码,你会发现我还是新手,还没有完全理解我在做什么,但你应该能够理解我在做什么:)
代码有点在那里,但我试图根据切换编辑按钮来连接会话中的更改,以获取要呈现的编辑模式模板。这是我所拥有的(精简为相关内容):
// 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
变量,因为它们是全局变量,因此被认为是不好的做法,您应该使用 ReactiveVar
绑定到您的项目模板。
item.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>
item.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 的新手,在尝试为列表项创建编辑功能以便能够修改列表项的属性(来自 Mongo 文档)。如果我将 editMode 设置为项目本身的布尔值 属性,我可以让它工作,但我希望它是本地的和临时的,而不是与文档本身一起存储。
看看下面的代码,你会发现我还是新手,还没有完全理解我在做什么,但你应该能够理解我在做什么:)
代码有点在那里,但我试图根据切换编辑按钮来连接会话中的更改,以获取要呈现的编辑模式模板。这是我所拥有的(精简为相关内容):
// 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
变量,因为它们是全局变量,因此被认为是不好的做法,您应该使用 ReactiveVar
绑定到您的项目模板。
item.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>
item.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
到您的项目!