Meteor中阵列的临时存储

时间:2016-06-15 17:14:40

标签: javascript arrays meteor

我正在使用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});
    }
});

1 个答案:

答案 0 :(得分:0)

临时客户端存储很容易在local (unmanaged) collection

中创建

myLocalCollection = new Mongo.Collection(null);

这样的集合具有集合的所有常规功能,除了:

  • 永远不会与服务器同步
  • 您可以使用{multi: true}
  • 一次更新或删除多个文档

我最近写了一篇关于如何使用这些内容的article on TheMeteorChef