0

後で別の for ループ内で使用するために、一時的/コンテキスト変数を for ループに格納しようとしています。http://borismoore.github.io/jsrender/demos/step-by-step/11_accessing-parent-data.htmlを参考にしました。

{^{for instances ~templateId=templateId}}
    {{:~templateId}}
    <select data-link="templateId" class="selected-visible" name="select-template">
        {^{for ~root.templates}}
            <option data-link="{:name} value{:id} selected{:id == ~templateId}"></option>
        {{/for}}
    </select>
{{/for}}

インスタンス配列内の各データ オブジェクトには、特定の値に設定された templateId プロパティがあり、テンプレート配列内の各オブジェクトには id プロパティがあります。

最初の問題は、デバッグ {{:~templateId}} が表示されないことです。変数が割り当てられていないようです。

テンプレート マークアップ内で ~helper セットのみを使用した後、「ビューモデル」でヘルパーを明示的に定義しようとしました

$.views.helpers({templateId: 0});

forループで設定しないと値が出力されるようになりましたが、forループで設定すると再び消えます。

次の問題は、ヘルパーがインスタンス ループの子ビューでのみ使用できるようにする必要があるため、~root スコープの for ループで ~templateId ヘルパーを使用できないことでしょうか?

最終的な目標は、選択で正しい値を選択することです。他の解決策が利用可能な場合は、教えてください。

4

1 に答える 1

0

~templateId=templateIdテンプレートから削除する必要があります...

説明:

この構文~helperは、ヘルパー/コンテキスト パラメータにアクセスするために使用されます。これは、 http://www.jsviews.com/#helpersに示すように外部で渡す/登録する、次のようにテンプレート内で作成/設定できますリンクした例、またはこの例: http://www.jsviews.com/#samples/jsr/paths{{for movies ~theater=theater}}~frstNm=firstName

そのため、通常はヘルパーを渡すか、テンプレート内で作成しますが、両方ではありません。

~templateId上記の例では、最初に - as -を渡し、0次に(現在のデータのtemplateIdプロパティの値に設定されているため、実際にはその値をundefinedに設定しています - undefinedを使用して、それをコンテキスト パラメータとして再定義しています。 、あなたの場合)。~templateId=templateId...=templateId

于 2015-08-26T17:38:57.850 に答える