2012-09-03 4 views
10

Ich versuche herauszufinden, innerhalb einer Kendo UI-Vorlage für eine Listenansicht, wie eine Sammlung innerhalb jedes Objekts durchlaufen werden, um die Informationen auf der Seite zu rendern. Hier ist ein Beispiel für die json, mit denen ich spiele:Kendo UI Schleife durch Sammlung in JSON innerhalb der Vorlage für ListView

{"Data":[{"Title":"Malicious Acts","KeyPairs":{"Key1":"12","Key2":"24"}},   {"Title":"Enrollments","KeyPairs":{"Key1":"12","Key2":"24"}},{"Title":"Customer Feedback","KeyPairs":{"Key1":"12","Key2":"24"}},{"Title":"Questionable Accounts","KeyPairs":{"Key1":"12","Key2":"24"}}],"Total":4,"AggregateResults":null,"Errors":null} 

Ich mag die Keypairs Elemente in der Vorlage machen und nur ein paar Probleme, die das Verständnis, wie zu. Hier

ist die Quelle:

<div id="subscriberFunctions"> 

    <script type="text/x-kendo-tmpl" id="template"> 
     <div class="subscriberFunction"> 
      <h3>${Title}</h3> 
      <!-- Display KeyPairs --> 
     </div> 
    </script> 

    @(Html.Kendo().ListView<SubscriberMenuFunction>() 
     .Name("listView") 
     .TagName("div") 
     .ClientTemplateId("template") 
     .DataSource(dataSource => 
     { 
      dataSource.Read(read => read.Action("SubscriberMenu", "ListView")); 
     }) 
     .Selectable(selectable => selectable.Mode(ListViewSelectionMode.Single)) 

    ) 
</div> 

Ich bin sicher, dass ich dies nur Grübeln, und es ist etwas simpel, aber nicht sicher, wie die foreach-Schleife in der Vorlage implementieren für Kendo UI zu erkennen es.

Vielen Dank im Voraus!

Antwort

23

du in der for-Schleife mit einem Zähler tun. Dies sollte Ihr Problem beheben:

<script type="text/x-kendo-tmpl" id="template"> 
<div class="subscriberFunction"> 
    <h3>${Title}</h3> 
    <!-- Display KeyPairs --> 
    <ul> 
     #for (var i=0,len=KeyPairs.length; i<len; i++){# 
      <li>${ KeyPairs[i] }</li> 
     # } # 
    </ul> 
</div> 

+0

Dies ist ein besserer Ansatz und funktioniert gut und bringt nicht das zusätzliche Code-Snippet in der Ausgabe mit. – mservais

+0

Ich denke du hast einen Tippfehler nach "var i = 0", Komma sollte ein Semikolan sein oder? –

+0

^Ich denke, Sie haben einen Tippfehler nach 'sollte ein', 'Semikolon' sollte 'Semikolon' richtig sein? : P – PAULDAWG

8

können Sie beliebigen JavaScript-Code innerhalb einer Vorlage:

<script type="text/x-kendo-tmpl" id="template"> 
    <div class="subscriberFunction"> 
     <h3>${Title}</h3> 
     <!-- Display KeyPairs --> 
     <ul> 
     # for (var key in KeyPairs) { # 
       <li>${ KeyPairs[key] }</li> 
     # } # 
     </ul> 
    </div> 
</script> 
+2

Das ist meinen Wert bekam aber mitgebrachte, was aussieht wie Javascript-Code: • \t 52b1e4cc-5fef-4f5c-a0b5-f054b2cf6655 • \t function() {return b} • \t Funktion (a) {var b = diese, c, d, e = Funktion() {Rückkehr b}, f; o.fn.init.call (this); für (d in a) c = a [ d], d.CharAt (0)! = "_" && (f = M.call (c), c = b.wrap (c, d, e)), b [d] = c; b.uid = n.guid()} • \t Funktion (a) {return this.hasOwnProperty (a) && a! == "_ Ereignisse" && typeof this [a]! == r && a! == "uid"} • \t function() {var a = {}, b, c; für (c in diesem) if (this.shouldSerialize (c)) {b = dies [c]; if (b instanceof R || b instanceof Q) b = b.toJSON(); a [c] = b} return a} ... – mservais

+0

Ist KeyPairs ein schlechter Name für dieses Beispiel? – mservais

+0

@mservais haben Sie herausgefunden, wie Sie das Javascript loswerden? Ich stehe vor dem gleichen Dilemma. –