我正在使用离子框架包,我有一个侧边栏类。有一个名为ionSideMenu.snapper
的类,它在查看源代码时是在呈现ionSideMenuContainer
模板时定义的,所以我通过执行以下操作来解决这个问题:
import {Template} from "meteor/templating";
import {ReactiveField} from "meteor/peerlibrary:reactive-field";
export const Snapper = new ReactiveField(false);
// now when the side menu is rendered, `IonSideMenu.snapper` should be defined.
Template['ionSideMenuContainer'].onRendered(() => Snapper(IonSideMenu.snapper));
但是,我想在我的Sidebar
类上创建一个静态方法,等待定义Snapper
,然后运行disabled
函数。
export class Sidebar extends BlazeComponent {
static disable() {
// await the snapper to be defined
Snapper().disable();
}
}
这个等待功能如何完成,这样我可以从任何其他模板调用它,它会在渲染时禁用?
答案 0 :(得分:0)
import {Tracker} from "meteor/tracker";
// ...
class Sidebar extends BlazeComponent {
static _awaitSnapperReady(callback) {
Tracker.autorun(c => {
const snapper = Snapper();
if (snapper) {
callback(snapper);
c.stop(); // end the current computation.
}
});
}
static disable() {
Sidebar._awaitSnapperReady(snapper => snapper.disable());
}
}