2

所以我正在为流星使用 amplifyjs 包。

我对流星还很陌生,并且无法使其成为反应性上下文。

我正在使用

amplify.store( string key )

因此,当我对此进行更改或添加值时,我希望视图更新反映这一点。

我想我将不得不使用 Meteor.deps 或自动订阅,但不知道从哪里开始。任何帮助都会很棒。

4

2 回答 2

4

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

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

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

于 2012-12-14T02:00:10.503 回答
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);
  },
});

只需将所有 Session.set/get 调用替换为 SessionAmplify.set/get 调用即可。调用 set() 时,会调用父 Session 方法,以及 amplify.store()。当第一次创建“子类”时,它会在其键中加载 amplify 存储中的所有内容。

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

于 2013-02-02T05:52:04.810 回答