具有嵌套foreach循环的knockout.js

时间:2012-01-23 14:05:58

标签: json foreach knockout.js

我正在使用knockout.js 2.0,当我做一个嵌套的foreach循环时,性能非常慢。主循环返回大约70条记录,70条json记录中的数组包含0-20个项目。所以我觉得这不是很多json数据。

我只是使用以下代码进行测试:

    <table>
        <tbody data-bind="foreach: Employees, visible: Employees().length > 0">  
            <tr>                
                <td class="centerdata" data-bind="text: ID"></td>
                <td class="centerdata" data-bind="text: Name"></td>
                <td>
                   <table>
                       <tbody data-bind="foreach: $data.Transactions">  
                           <tr>   
                              <td data-bind="text:TransDate"></td>
                           </tr>
                       </tbody>
                   </table>
                </td>
            </tr>                    
        </tbody>
   </table>

该页面加载大约需要20秒。 json中还有其他字段,但为了简单起见,我删除了它们。

谢谢, 马特

1 个答案:

答案 0 :(得分:1)

我认为必须有其他事情发生在这里,马修。

我已经敲了一个快速的小提琴,使用你的标记与你提到的类似大小的虚拟数据,并且在Chrome中表现为约1秒。

http://jsfiddle.net/unklefolk/DCLaR/

是否存在重复计算的依赖观察值?如果是这样,请查看油门功能(http://knockoutjs.com/documentation/throttle-extender.html)