2012-09-03 15 views
10

Sto cercando di capire all'interno di un modello di interfaccia utente Kendo per una visualizzazione elenco come loop attraverso una raccolta all'interno di ogni oggetto per rendere le informazioni sulla pagina. Ecco un esempio di JSON sto giocando con:UI di loop Kendo attraverso raccolta in Json all'interno del modello per 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} 

voglio rendere le voci coppie di chiavi nel modello e solo un avendo qualche problema a capire come.

Qui è la fonte:

<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> 

Sono sicuro che sto solo overthinking questo, ed è qualcosa di riduttivo, ma non è sicuro come implementare il ciclo foreach nel modello per Kendo UI di riconoscere esso.

Grazie in anticipo!

risposta

23

Si può fare questo con un contatore nel ciclo for. Questo dovrebbe risolvere il problema:

<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

Questo è un approccio migliore e funziona alla grande e non porta con sé lo snippet di codice in eccesso nell'output. – mservais

+0

Penso che tu abbia un errore di battitura dopo "var i = 0," la virgola dovrebbe essere un punto e virgola giusto? –

+0

^Penso che tu abbia un errore di battitura dopo 'dovrebbe essere un', 'punto e virgola' dovrebbe essere 'punto e virgola' giusto? : P – PAULDAWG

8

Si può avere il codice JavaScript arbitrario all'interno di un template:

<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

che ha ottenuto i miei valori, ma portato con sé quello che appare come codice javascript: • \t 52b1e4cc-5fef-4f5c-a0b5-f054b2cf6655 • \t function() {return b} • \t function (a) {var b = questo, c, d, e = function() {return b}, f; o.fn.init.call (this); for (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 function (a) {return this.hasOwnProperty (a) && a! == "_ events" && typeof questo [a]! == r && a! == "uid"} • \t function() {var a = {}, b, c; for (c in this) if (this.shouldSerialize (c)) {b = this [c]; if (b instanceof R || b instanceof Q) b = b.toJSON(); a [c] = b} restituisce un} ... – mservais

+0

KeyPairs è un nome errato per questo esempio? – mservais

+0

@mservais hai capito come sbarazzarsi della javascript? Sto affrontando lo stesso dilemma. –