我正在使用ReactiveDict
来更改一个或多个模板的状态和样式。我想将每个选定模板的id
保存到一个我可以在方法中使用的数组中。在我触发此事件之前,用户需要能够在数组中添加和删除任何id
,直到确定为final。
如何创建包含id
设为template.instance().state
的所有isSelectedId
的数组?
我想我可以在每次点击时使用array.push()
并保存到Session变量,但Session变量不会改变。如果未选中,我也无法删除特定的id
。我还考虑过保存到一个集合,但我只想要临时存储。
编辑代码,包括使用本地收集回答的部分
<template name="App">
<div id="app-inner">
{{#each companies}}
{{>Company}}
{{/each}}
</div>
</template>
<template name="Company">
<div class="company {{isSelected}}">
<a>Company: {{companyName}}</a>
</div>
</template>
Template.App.helpers({
companies: function() {
return Companies.find({});
}
});
Template.Company.events({
'click .company': function(e) {
var state = Template.instance().state.get('isSelectedId');
var id = this._id;
var count = localSelections.find().count();
if(count === 0) {
var localId = localSelections.insert({});
}
console.log("Local ID: ", localId);
switch (state) {
case null:
Template.instance().state.set('isSelectedId', this._id);
localSelections.update({_id:localId},{$push:{select:id}});
break;
case id:
Template.instance().state.set('isSelectedId', null);
localSelections.update({_id:localId},{$pull:{select:id}});
break;
}
}
});
Template.Company.helpers({
'isSelected': function() {
return this._id === Template.instance().state.get('isSelectedId') ? 'is-selected' : '';
}
});
Template.Company.onCreated(function() {
this.state = new ReactiveDict;
this.state.set('isSelectedId', null);
});
//client/collections
localSelections = new Mongo.Collection(null);
Meteor.methods({
valuationAdd: function(array) {
check(array, Array);
Valuations.insert({selections:array});
}
});
答案 0 :(得分:0)
临时客户端存储很容易在local (unmanaged) collection
中创建myLocalCollection = new Mongo.Collection(null);
这样的集合具有集合的所有常规功能,除了:
{multi: true}
我最近写了一篇关于如何使用这些内容的article on TheMeteorChef。