2012-01-23 4 views
3

Je travaille avec knockout.js 2.0 et quand je fais une boucle foreach imbriquée, la performance est extrêmement lente. La boucle principale a environ 70 enregistrements renvoyés et le tableau à l'intérieur de ces 70 enregistrements json contient entre 0 et 20 éléments. Donc, je pense que ce n'est pas beaucoup de données JSON.knockout.js avec boucle foreach imbriquée

Je teste juste avec le code ci-dessous:

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

La page prend environ 20 secondes pour charger. Il y a d'autres champs dans le json, mais je les ai enlevés pour plus de simplicité.

Merci, Matt

+0

Jetez un oeil à ce sujet: https://github.com/SteveSanderson/knockout/pull/272 et essayez de tester votre application avec la dernière version KO de github: https://github.com/SteveSanderson/knockout/tree/master/build/output. Vous devriez voir quelques améliorations décentes qui seront incluses dans KO 2.1. –

+0

Nous avons essayé d'utiliser le dernier knock-out et aussi nommer les deux boucles foreach, mais la performance est toujours la même. – Matthew

Répondre

1

je pense qu'il doit y avoir quelque chose d'autre se passe ici, Matthew. J'ai battu un vibromasseur rapide, en utilisant votre balisage avec des données fictives d'une taille similaire à celle que vous mentionnez et la performance est ~ 1 seconde dans Chrome.

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

Y at-il une observable dépendante qui est calculée de façon répétée? Si c'est le cas, jetez un coup d'œil à la fonctionnalité des gaz (http://knockoutjs.com/documentation/throttle-extender.html)

Questions connexes