MeteorJS和AmplifyJS反应灵敏

时间:2012-11-14 18:49:03

标签: javascript node.js meteor amplifyjs

所以我正在使用magnify的magnifyjs软件包。

我仍然是流星的新手,我很难将其作为反应性环境。

我正在使用

amplify.store( string key )

因此,当我对此进行更改或添加值时,我希望视图更新能够反映出来。

我想我必须使用Meteor.deps或autosubscribe但不知道从哪里开始。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:4)

由于amplify是第三方软件包,因此它不使用Meteor上下文或内置了反应性。但您可以非常轻松地构建自己的反应式包装器。您可以查看deps文档以了解如何使用Meteor.deps.Context和Meteor.deps._ContextSet来执行此操作:

http://docs.meteor.com/#meteor_deps

我还在这里发布了一个视频教程:http://www.eventedmind.com/posts/reactivity-with-contexts

答案 1 :(得分:1)

实际上你可以做的是创建一个Session的“子类”,它在调用set()时将值存储在Amplify的存储中。您将自动继承Session的所有反应属性。这是代码,它对我有用:

SessionAmplify = _.extend({}, Session, {
  keys: _.object(_.map(amplify.store(), function(value, key) {
    return [key, JSON.stringify(value)]
  })),
  set: function (key, value) {
    Session.set.apply(this, arguments);
    amplify.store(key, value);
  },
});

使用SessionAmplify.set / get调用替换所有Session.set / get调用。调用set()时,将调用父Session方法,以及amplify.store()。首次创建“子类”时,它会加载放在其键中的放大器中的所有内容。

您可以在此处测试排行榜示例的工作变体:https://github.com/sebastienbarre/meteor-leaderboard