将关联数组作为参数传递给jTemplates

时间:2011-09-20 15:30:53

标签: javascript jquery jtemplates

我创建了一个jTemplate来显示“测试”对象的数组。该数组是常规索引数组。该模板非常基础,只需使用{#foreach}迭代数组中的项目并将它们显示在一个小表中。这个模板给我的工作,我得到了预期的输出。

    // Setup the JTemplate. 
    $('#tests_div').setTemplate($('#tests_template').html());

    try {

        // Process the JTemplate to display all currently selected tests.
        $('#tests_div').processTemplate(_selectedTests);
    }
    catch (e) {
        alert('Error with processing template: ' + e.Description);
    }


    <script type="text/html" id="tests_template">
       {#foreach $T as tests}
          <table>
             <tr>
                <td>Index: {$T.tests.index}</td>
                <td>Name: {$T.tests.firstname} {$T.tests.lastname}</td>
                <td>Score: {$T.tests.score} </td>
             </tr>
          </table>
      {#/for}
    </script>

我想要做的是将我的数组更改为关联数组,并使用测试索引将对象存储在其中。这使我在以后需要对测试进行一些操作时更容易使用。

var a = new Test;
a.index = 12345678;
_selectedTests[a.index] = a;

然而,当我将数组传递给模板时,我得到一个关于脚本的错误导致我的浏览器运行缓慢,询问我是否要停止它。它似乎在某种无限循环中。我不确定模板是否正确读取数组。谁能告诉我如何使用jTemplates中的关联数组?

1 个答案:

答案 0 :(得分:1)

你的问题是你的阵列认为它是巨大的:

_selectedTests[12345678] = a; // creates an array of 12345678 elements!! length of 12345678

所以你可以这样做:

_selectedTests[a.index.toString()] = a; // creates an associative array with one key "12345678", length of 1