2016-05-18 6 views
4

FlowRouter.reload()のFlowRouterドキュメントが見つかりましたが、具体的なコード例が見つからず、動作できません。Meteor FlowRouter.reload()の使用方法

私のアプリでは、ページのサイズ変更時に要素を再配置するために巧妙なjavascript(アイソトープ)を使用するテンプレートがあります。ユーザーがナビゲートしてブラウザのウィンドウのサイズを変更した後、サイズ変更されたウィンドウの要素の位置を変更するために、更新して再描画する必要のないページに戻ります。

これは私のルートです。 FlowRouter.reload()を使って "work"テンプレート領域を再読み込み/リフレッシュするにはどうすればよいですか?あるいは、レイアウトテンプレートやウィンドウ全体を再読み込み/リフレッシュするためにどのように使用しますか?

FlowRouter.route('/work', { 
    action: function() { 
    BlazeLayout.render('body-static', { 
     content: 'work', 
    }); 
    }, 
}); 
+0

サイズが変更されたときやドキュメントが再度アクティブになったときに '$ grid.isotope( 'layout')'を実行できませんか? –

+0

私はそれを試みましたが、私はFlowRouterのtriggerEnterでそれをやりたかったので、この関数はjQueryを実行しません。さらに、FlowRouter.reload()の使い方を知りたいです。 :) – Deborah

+1

あなたは、ドキュメントがその機能のために非常に疎であることは間違いありません! –

答えて

3

他の誰かがここに来る場合は、これはHugh in the Meteorフォーラムの大きな助けを得て解決されました。

解決方法はリロードを使用しませんでした。代わりに、FlowRouterのTriggersを使用して、テンプレートが再ロードされているかどうかを確認し、テンプレートが再ロードされている場合はリフレッシュし、無限ループを防ぐためにリフレッシュを一旦停止します。

これはうまくいく方法です。

// handle refreshing div on every load of div 
let fireReload = false; 

function reloadCheck(context, redirect, stop) { 
    if (fireReload) { 
    console.log('Hugh is Awesome and also reloading screen...'); 
    FlowRouter.reload(); 
    stop(); 
    } 
} 

function routeCleanup() { 
    fireReload = !fireReload; 
} 

FlowRouter.route('/work', { 
    action: function() { 
     BlazeLayout.render('body-static', { 
      content: 'work', 
     }); 
    }, 
    triggersEnter: [reloadCheck], 
    triggersExit: [routeCleanup] 
}); 
関連する問題