3

動的テンプレート内に動的テンプレートをレンダリングしようとしています。

メインレイアウト:

<template name="template1">
    {{>navbar}}
    <div class="container">
        {{>Template.dynamic template=content}}
    </div>
</template>

サブテンプレート:

<template name="template2">
<div class="container">
    <div class="row">
        <h2>Data Input</h2>
    </div>
    <div class="row">
        <ul class="nav nav-pills">
            <li class="active"><a href="/input/inc">Inc</a></li>
            <li><a href="/input/exp">Exp</a></li>
        </ul>
    </div>
    <div class="row">
        {{>Template.dynamic template=dataSection}}
    </div>
</div>

サブサブテンプレート:

<template name="template3">
<h2>Inc</h2>
</template>

以下は私の FlowRouter コードです。それは間違っていますが、私がやろうとしていることを誰かに理解してもらえるかもしれないと思いました。フロールーター:

FlowRouter.route('/input/income', {
action: function () {
    BlazeLayout.render("template1", {
        content: "template2"
    });
    BlazeLayout.render("template2", {
        dataSection: "template3"
    });
 }
});

template1 内で template2 をレンダリングしようとしています。その後、テンプレート 2 内でテンプレート 3 をレンダリングしたいと考えています。

4

2 に答える 2

4

ヘルパーを使用してサブテンプレートをレンダリングする必要があります。ルーターコードを次のように変更します。

action: function () {
    BlazeLayout.render("template1", {
        content: "template2"
    });
}

template2 は指定された動的テンプレートを自動的にレンダリングするため、必要なレンダリング呼び出しは 1 回だけです。template2 でヘルパーを作成します。

Template.template2.helpers({
  dataSection() {
    return "template3";
  }
});

テンプレートの名前を返す限り、必要に応じて return ステートメントを別のロジックに置き換えることができます。

于 2016-03-09T22:14:14.767 に答える