JsRender: uso de la declaración if que compara los valores en el objeto JSON con la variable externa

En mi plantilla de JsRender, quiero filtrar el objeto json para que solo represente registros que cumplan ciertos criterios, por ejemplo, una identificación principal, que es una variable que se inicializa inmediatamente antes de ejecutar el procesamiento.

Lo que me gustaría hacer está debajo, pero la segunda línea de sintaxis es solo una suposición. ¿Como hacer esto?

<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>

preguntado el 04 de julio de 12 a las 02:07

2 Respuestas

Si bien puede modificar sus datos para llevar su ID de fila actual, generalmente es igual de fácil (y más limpio) 'parametrizar' la plantilla, pasando parámetros con el método de representación. Puede hacerlo pasando un parámetro de contexto adicional. Puede llevar tanto parámetros como funciones auxiliares que puede pasar dinámicamente solo para la representación de esta plantilla...

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

Luego, puede acceder a esos parámetros con nombre desde dentro de la plantilla (o también dentro de plantillas anidadas) de la misma manera que accedería a un ayudante registrado, agregando '~' al nombre.

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

He agregado un nuevo demostración de muestra en GitHub mostrando que.

Respondido el 25 de Septiembre de 15 a las 07:09

Simplemente podría asignar el valor de la fila actual a una propiedad del objeto de datos...

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

Luego, su plantilla puede verificar esta propiedad.

<script id="tmpl_report_entry_table_data_rows" type="text/x-jsrender">
    {{if ENTRY_ID == currentRow}}
    // remaining template. 

Respondido 04 Jul 12, 02:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.