如何响应式调用响应变量引用的 Meteor 方法?
How to reactively call a Meteor method referenced by a reactive variable?
我正在尝试调用 Meteor 方法,而不是使用硬编码字符串,而是使用包含其名称的 Session
变量。当通过 Session.set
.
更改 Session
值时,它只工作一次但不会重新 运行 方法
服务器代码:
Meteor.methods({
hello: function () {
console.log("hello");
},
hi: function () {
console.log("hi");
}
});
客户代码:
Session.set('say', 'hi');
Meteor.call(Session.get('say')); // console prints hi
Session.set('say', 'hello'); // console is not printing, expected hello
如何在 Session
值更改后被动地调用 "new" 方法?
你需要一个反应上下文来实现这种自制的反应。
您只需使用 Tracker.autorun
:
即可实现此目的
Session.set('say', 'hi');
Tracker.autorun(function callSayMethod() {
Meteor.call(
Session.get('say')
);
});
Meteor.setTimeout(
() => Session.set('say', 'hello'),
2000
);
空格键 template helpers 使用这种上下文来实现模板中的反应性。
请注意,您不需要 Session
here. A simple ReactiveVar
就足够了:
const say = new ReactiveVar('hi');
Tracker.autorun(function callSayMethod() {
Meteor.call(
say.get()
);
});
Meteor.setTimeout(
() => say.set('hello'),
2000
);
我正在尝试调用 Meteor 方法,而不是使用硬编码字符串,而是使用包含其名称的 Session
变量。当通过 Session.set
.
Session
值时,它只工作一次但不会重新 运行 方法
服务器代码:
Meteor.methods({
hello: function () {
console.log("hello");
},
hi: function () {
console.log("hi");
}
});
客户代码:
Session.set('say', 'hi');
Meteor.call(Session.get('say')); // console prints hi
Session.set('say', 'hello'); // console is not printing, expected hello
如何在 Session
值更改后被动地调用 "new" 方法?
你需要一个反应上下文来实现这种自制的反应。
您只需使用 Tracker.autorun
:
Session.set('say', 'hi');
Tracker.autorun(function callSayMethod() {
Meteor.call(
Session.get('say')
);
});
Meteor.setTimeout(
() => Session.set('say', 'hello'),
2000
);
空格键 template helpers 使用这种上下文来实现模板中的反应性。
请注意,您不需要 Session
here. A simple ReactiveVar
就足够了:
const say = new ReactiveVar('hi');
Tracker.autorun(function callSayMethod() {
Meteor.call(
say.get()
);
});
Meteor.setTimeout(
() => say.set('hello'),
2000
);