2017-06-14 11 views
0

をレンダリングする前に、子テンプレートのレンダリングを待ってはいけない: 私は{{> child_template }}と子テンプレートが含ま親テンプレートを持っている場合流星ブレイズ:私は次のように実現ブレイズで遊んで親

その後、ブレイズの子テンプレートを待ちます親をレンダリングする前にレンダリングされるこれは、すべてではない場合もあれば良い場合もあります。

たとえば、親テンプレートに<h1>Welcome to my page</h1>が含まれ、子に10000個のアイテムが含まれているとします。私は、次できるだけ早く<h1>を表示し、それを管理するために、私が現在やっている、後

を表示させる10個の000アイテムを待つために道をされたい:それは

Template.parent.onRendered(function(){ 
    Blaze.render(Template.child, document.body); 
}); 

を取り組んでいるが、私はかしら誰もがよく見えるこの問題のためのより良い解決策を持っています。ありがとう

+1

あなたは 'デフォルトは' false'の子コンポーネントにカスタムブール 'canRender'引数を渡すことができますが、親コンポーネントの' onRendered'セット:

Template.parent.onCreated(function() { this.state = new ReactiveDict(); this.state.setDefault({ "canRender": false, }); } Template.parent.onRendered(function() { this.state.set("canRender", true); } Template.parent.helpers({ canRender() { return Template.instance().state.get("canRender"); } }); 

子コンポーネントの状態を渡しますそれは「真実」です。そして、子コンポーネントはこの引数をチェックして、それが 'true'でなければ何も表示しません。 – aedm

+0

@aedmそれは答え、コメントではありません。 – chazsolo

+0

@aedmこれは実際には私が理解したものから共通のアーキテクチャであるようです。 – fadomire

答えて

1

あなたは、デフォルトでfalseだが、親コンポーネントのonRenderedが真のそれを設定し、子コンポーネントにカスタムブール型の引数を渡すことができます。子コンポーネントはこの引数をチェックして、それがtrueでなければ何もレンダリングしません。

<template name="parent"> 
    {{>child canRender=canRender}} 
</template> 

<template name="child"> 
    {{#if canRender}} 
    <p>Millions of items go here.</p> 
    {{/if}} 
</template> 
0

あなたの子供テンプレートには10​​000アイテムのリストがあります。これは、あなたが何らかのコレクションを購読したことを意味します。あなたの問題を解決するために、以下のコードを書くことができます。

<template name="Parent"> 
    <div> 
     <h1>Welcome to my page</h1> 
    </div> 
    {{#if Template.subscriptionsReady}} 
    {{> Child}} 
    {{else}} 
    <p>Loading Child Items...</p> 
    {{/if}} 
</template> 
+0

実際には、10,000のアイテムのリストはサブスクリプションのものであってもよいし、そうでなくてもよい。しかし、ありがとう – fadomire

関連する問題