2011-06-12 1 views
0

J'ai un gridview que je veux zébrer après qu'il a été lié et mis à jour à partir d'un appel UpdateFromJS.Feu AfterRender sur le conteneur d'un modèle foreach

Le modèle utilise une base de données foreach, mais je ne veux pas la rayer sur l'événement AfterRender car il sera appelé sur chaque ligne. Je ai besoin de tirer sur le rendu de la grille entière

Répondre

4

est ici un fil avec une description de la façon dont j'ai essayé de gérer cela dans le passé: https://groups.google.com/d/topic/knockoutjs/cJ2_2QaIJdA/discussion

Fondamentalement, nous ajoutons une liaison à faire le striping. La liaison serait spécifiée après le modèle de liaison comme:

<ul data-bind="template: { name: 'itemsTmpl', foreach: items }, stripe: items, evenClass: 'light', oddClass: 'dark'"></ul> 

La liaison pourrait ressembler à ceci:

//separate options in binding 
ko.bindingHandlers.stripe = { 
    update: function(element, valueAccessor, allBindingsAccessor) { 
     var value = ko.utils.unwrapObservable(valueAccessor()); //creates the dependency 
     var allBindings = allBindingsAccessor(); 
     var even = allBindings.evenClass; 
     var odd = allBindings.oddClass; 

     //update odd rows 
     $(element).children(":nth-child(odd)").addClass(odd).removeClass(even); 
     //update even rows 
     $(element).children(":nth-child(even)").addClass(even).removeClass(odd);; 
    } 
} 

Voici un échantillon avec cette liaison et deux autres alternatives similaires: http://jsfiddle.net/rniemeyer/HJ8zJ/. On passe les options directement dans la liaison stripe et une autre enveloppe la liaison de modèle, de sorte que vous pouvez simplement spécifier une liaison unique.

+0

ok merci beaucoup! – jaffa

Questions connexes