我的应用程序中需要一些设置。现在我想在客户端上提供一些它们。所以我做了:
Meteor.startup(function () {
Meteor.publish('settings', function () {
return {
isAuth: false
}
});
我订阅了
Meteor.subscribe('settings');
这根本不起作用,不知怎的,我觉得这只适用于收藏。所以问题是如何在客户端中获取这些设置。此外,渲染内容需要这些设置,因此我在init期间需要这些数据!
答案 0 :(得分:3)
将设置保存在共享的js文件中 /shared/const.js:
Global.settings = {
'Something'
};
发布/订阅系统仅用于集合。
虽然在旁注中isAuth听起来不像设置而是会话变量./
答案 1 :(得分:1)
如果可以将这些配置设置放在代码中,那么就按照Marco说的那样做。
如果要在JSON配置文件中指定它们,请使用Meteor.settings
- public
中客户端上的配置文件Meteor.settings.public
字段中的任何内容都可用。
可以通过发布/订阅执行此操作,但它可能有点过分:
// On the server
Meteor.publish("applicationSettings", function () {
this.added("settings", "arbitrary_string", {isAuth: true});
this.ready();
});
// On the client
Settings = new Meteor.Collection("settings"); // ONLY on the client
Meteor.subscribe("applicationSettings");
// after subscription is ready,
// Settings.findOne() returns {_id: "arbitrary_string", isAuth: true}