2016-04-06 6 views
1

私はイオンフレームワークパッケージを使用しています。サイドバークラスがあります。そこのソースコードを見て、ionSideMenu.snapperと呼ばれるクラスは、あるionSideMenuContainerテンプレートがレンダリングされるときに定義されたので、私は次の操作を行って、その周りを取得されています別のテンプレートからonRenderedイベントを待つメソッドを作成するにはどうすればよいですか?

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)); 

しかし、私は、静的メソッドを作成したいですSnapperが定義されるのを待つ私のSidebarクラスでは、disabled関数を実行します。

export class Sidebar extends BlazeComponent { 
    static disable() { 
    // await the snapper to be defined 
    Snapper().disable(); 
    } 
} 

他のテンプレートから呼び出すことができるように、この待機中の機能はどのようにできますか?レンダリング時に無効になりますか?

答えて

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()); 
    } 
} 
関連する問題