1

アプリケーションの一部のページで、印刷可能モードを有効にしたいと考えています。このモードでは、URL パラメータに?print=true. 現在、iron-router を介して URL パラメーターをデータ コンテキストとして送信するという回避策を試みました。

    this.route('permitsList', {
        path: '/permits/',
        path: '/',
        waitOn: function(){
            return Meteor.subscribe('openPermits');
        },
        data: function(){
            return this.params;
        }
    });

要素を適切に表示および非表示にするために使用されるグローバル ハンドルバー ヘルパーが付属しています。

この場合、URL に が含まれている場合、?print=true適切な要素を表示および非表示にするのは簡単です。ただし、このソリューションには 2 つの大きな問題があります。1 つ目は、この印刷可能なビューを実装したいページの一部が既にデータ コンテキストを持っているという事実です。データ コンテキストを上書きすることは現実的ではありません。また、両方のデータ コンテキストをより大きなオブジェクトに埋め込むことは、かなり嫌なことです。2 つ目の問題は、印刷可能なビューをテンプレート自体の内部だけでなく、ページがレンダリングされる周囲のレイアウト テンプレートにも適用して、不要なヘッダーなどを削除することです。

Iron Router を介してデータ コンテキストでパラメータを指定せずに、Spacebars ヘルパー内の URL パラメータにアクセスする合理的な方法はありますか?

4

1 に答える 1

1

答えとしてまとめると:流星がなくてもクエリパラメータにアクセスできます

if ( window.location.search.indexOf( '?print=true' ) > -1 ) { ... } 

window.location は現在の URL を返します。window.location.search はクエリ パラメータのみを文字列として返します。

于 2014-06-09T08:08:16.503 に答える