2011-05-16 3 views
2

Je commence avec Knockout. Je n'arrive pas à comprendre comment configurer la liaison dans valuesTemplate. Quel est le nom de la valeur actuelle de l'itérateur?Nom de la valeur actuelle dans Knockout

<div id="knock"> 
    <p>Name: <input data-bind="value: Name" /></p> 
    <table> 
     <thead><tr><td>Value</td></tr></thead> 
      <tbody data-bind="template: {name: 'valuesTemplate', foreach: Values}" /> 
    </table> 

    <script type="text/html" id="valuesTemplate"> 
     <tr><td><input data-bind="value: value" /></td></tr> 
    </script> 
</div> 

<script type="text/javascript"> 
    var data = {"Name":"Fish","Values":["Cod","Salmon","Perch","Glish"],"Id":"lookups/1"}; 
    var viewModel = ko.mapping.fromJS(data); 
    ko.applyBindings(viewModel); 
</script> 

Répondre

5

A l'intérieur d'un modèle jQuery, vous pouvez accéder au contexte actuel en utilisant $data ou $item.data, donc comme:

<script type="text/html" id="valuesTemplate"> 
    <tr><td><input data-bind="value: $data" /></td></tr> 
</script> 

Cependant, si vous utilisez observables, vous allez vouloir vos valeurs tableau pour contenir des objets plutôt que des chaînes.

+0

A travaillé parfaitement, merci! –

+0

Si vous utilisez des observables, alors vous voudrez que votre tableau de valeurs contienne des objets (même comme {name: 'value'}). Vous ne pouvez pas rendre les valeurs d'éléments individuels dans un tableau observables. –

+0

Je suis passé à cela. Merci pour le conseil. –

Questions connexes