2016-04-14 1 views
4

J'utilise Salvattore jQuery Masonry pour afficher les éléments dans la grille. Les éléments sont rendus à l'aide du modèle Knockout avant l'initialisation de Salvattore.Comment ajouter manuellement un template Knockout compilé dans DOM?

Par exemple:

<div id="grid"> 
    <!-- ko foreach: aItems --> 
    <div> 
     <div data-bind="template: { name: 'xyz-template', data: $data }"> 
    </div> 
    <!-- /ko --> 
</div> 

<script> 
    salvattore.registerGrid(document.getElementById("grid")); 
</script> 

mais chaque fois que l'objet des changements que je dois ajouter manuellement article à l'aide script suivant

<script> 
    var grid = document.querySelector('#grid'); 
    var item = document.createElement('article'); 

    // Note in my case item is going to be my complied knockout template 
    salvattore.appendElements(grid, [item]); 
</script> 

mais de le faire, alors je dois avoir satisfait modèle knock-out. Comment puis-je compiler manuellement mon Knockout Template pour que je puisse l'ajouter en utilisant la méthode salvattore.appendElements? Ou existe-t-il une solution de contournement que je peux utiliser?

Remarque: Salvattore jQuery Masonry gère lui-même le rendu DOM dans la grille, de sorte que l'effet d'accrochage n'a aucun effet une fois que le plugin est initialisé.

Répondre

2

Avez-vous essayé d'utiliser la fonction de knock-out renderTemplate pour rendre le programme modèle dans un élément DOM donné:

ko.renderTemplate("xyz-template",itemData,{},item,"replaceChildren");