0

私の JsRender テンプレートでは、json オブジェクトをフィルター処理して、特定の基準 (たとえば、レンダリングを実行する直前に初期化される変数である親 ID) を満たすレコードのみをレンダリングしたいと考えています。

私がやりたいことは以下のとおりですが、構文の 2 行目は単なる推測です。これを行う方法?

<script id="tmpl_report_entry_table_data_rows" type="text/x-jsrender">
{{if ENTRY_ID==n_current_entry_id_from_external_variable}}
<tr class="attribute_data_row">
    <td class="entry_id attribute_data"><span>{{:ENTRY_ID}}</span></td>
    <td class="attribute_1 attribute_data hidden"><span>{{:ATTRIBUTE__1}}</span></td>
    <td class="attribute_2 attribute_data"><span>{{:ATTRIBUTE__2}}</span></td>
    <td class="attribute_14 attribute_data"><span>{{:ATTRIBUTE__14}}</span></td>
    <td class="attribute_13 attribute_data"><span>{{:ATTRIBUTE__13}}</span></td>
    <td class="attribute_11 attribute_date attribute_data"><span>{{:ATTRIBUTE__11}}</span></td>
    <td class="attribute_11 attribute_date_hidden"><span>{{:ATTRIBUTE__11}}</span></td>
    <td class="attribute_3 attribute_data"><span>{{:ATTRIBUTE__3}}</span></td>
    <td class="attribute_4 attribute_data"><span>{{:ATTRIBUTE__4}}</span></td>
    <td class="attribute_5 attribute_data">
        <a href="?"><span>{{:ATTRIBUTE__5}}</span></a>
    </td>
    <td class="cmd"></td>
</tr>    
{{/if}}
</script>

<script>
var obj_my_data = [
    {"ENTRY_ID":79,
        "test":true,
        "ATTRIBUTE__1":"Aleutian Islands",
        "ATTRIBUTE__2":"Arrowtooth Flounder",
        "ATTRIBUTE__13":"BSAI trawl limited access",
        "ATTRIBUTE__3":"Open",
    "ATTRIBUTE__4":"TAC",
    "ATTRIBUTE__5":"",
    "ATTRIBUTE__11":",",
    "ATTRIBUTE__14":"Entire GOA"},
    {"ENTRY_ID":80,
    "test":true,
    "ATTRIBUTE__1":"Aleutian Islands",
    "ATTRIBUTE__2":"Atka Macherel",
    "ATTRIBUTE__13":"BSAI trawl limited access",
    "ATTRIBUTE__3":"Open",
    "ATTRIBUTE__4":"TAC",
    "ATTRIBUTE__5":"",
    "ATTRIBUTE__11":",",
    "ATTRIBUTE__14":"Entire GOA"}
];

$(document).ready(function(){  
    $("table tbody").append($("#my_template").render(obj_my_data)); 
});
</script>
4

2 に答える 2

4

現在の行 ID を保持するようにデータを変更することもできますが、一般的には、render メソッドでパラメーターを渡すことで、テンプレートを「パラメーター化」するのが簡単 (かつクリーン) です。これを行うには、追加のコンテキスト パラメーターを渡します。このテンプレートのレンダリングのためだけに動的に渡すことができるパラメーターとヘルパー関数の両方を運ぶことができます...

$("#my_template").render(myData, {currentRowId: myCurrIdVar}));

次に、登録済みのヘルパーにアクセスするのと同じ方法で、名前に「~」を追加することで、テンプレート内 (またはネストされたテンプレート内) からこれらの名前付きパラメーターにアクセスできます。

{{if ENTRY_ID==~currentRowId}}
    ...
{{/if}}

それを示す新しいサンプル デモを GitHub に追加しました。

于 2012-07-05T03:44:47.340 に答える
1

現在の行の値をデータオブジェクトのプロパティに割り当てることができます...

$(document).ready(function(){
    obj_my_data.currentRow = n_current_entry_id_from_external_variable;
    $("table tbody").append($("#my_template").render(obj_my_data)); 
});

テンプレートは、このプロパティに対してチェックできます。

<script id="tmpl_report_entry_table_data_rows" type="text/x-jsrender">
    {{if ENTRY_ID == currentRow}}
    // remaining template. 
于 2012-07-04T01:41:37.653 に答える