所以我正在为流星使用 amplifyjs 包。
我对流星还很陌生,并且无法使其成为反应性上下文。
我正在使用
amplify.store( string key )
因此,当我对此进行更改或添加值时,我希望视图更新反映这一点。
我想我将不得不使用 Meteor.deps 或自动订阅,但不知道从哪里开始。任何帮助都会很棒。
所以我正在为流星使用 amplifyjs 包。
我对流星还很陌生,并且无法使其成为反应性上下文。
我正在使用
amplify.store( string key )
因此,当我对此进行更改或添加值时,我希望视图更新反映这一点。
我想我将不得不使用 Meteor.deps 或自动订阅,但不知道从哪里开始。任何帮助都会很棒。
由于 amplify 是第三方包,它不使用 Meteor 上下文或内置反应性。但是您可以很容易地构建自己的反应性包装器。您可以查看 deps 文档以了解如何使用 Meteor.deps.Context 和 Meteor.deps._ContextSet 来执行此操作:
http://docs.meteor.com/#meteor_deps
我还在这里发布了一个视频教程:http ://www.eventedmind.com/posts/reactivity-with-contexts
实际上,您可以做的是创建 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