2010-12-20 8 views
0

Ich versuche, einige Inhalte in einer Vorlage zu setzen.Können Sie die sichtbare Bindung basierend auf den aktuell gebundenen Daten anwenden? nur dann, wenn das Element sichtbar gemacht werden wird, ist die „aktuelle Position“

Hier ist der Code so weit, ich möchte in der Lage sein, nur einen Teil der inneren Vorlage zu rendern, wenn das gerenderte Datenelement ID == window.viewModel.activeObject hat.

<section data-bind='template: { name: "categoryTemplate", foreach: categories }'></section> 

<script type="text/html" id="categoryTemplate"> 
    <section> 
     <h2>${Name}</h2> 
     <section data-bind='template: { name: "objectTemplate", foreach: Objects }'></section> 
    </section> 
</script> 
<script type="text/html" id="objectTemplate"> 
    <article> 
     <h3>${Name}</h3> 

     (only render this if the object rendered has ID equal to viewModel.activeObject) 
     {{html Text}} 

    </article> 
</script> 
<script> 
    $(document).ready(function(){ 
     window.viewModel = { categories : <asp:Literal runat="server" ID="LiteralJSON" />, 
      activeCategory: ko.observable(0), 
      activeObject: ko.observable(0) 
     }; 

     ko.applyBindings(window.viewModel); 
    }); 
</script> 

Wie würde ich das machen?

Antwort

1

Sie wollen verwenden {if}{/if}

<script type="text/html" id="objectTemplate"> 
    <article> 
     <h3>${Name}</h3> 
     {if $item.data.id === viewModel.activeObject()} 
     {{html Text}} 
     {/if} 
    </article> 
</script>