2016-05-21 17 views
0

Ist es möglich, mehrere JSON-Objekte in Moustache zu binden? Ich habe eine kleine App, in der ich Backbone verwende, um Daten aus einer erholsamen API zu extrahieren.Backbone und Moustache binden an mehrere JSON-Objekte

Ich bekomme im Wesentlichen eine Liste von Mitarbeitern und dann alle ihre Untergebenen. Ich übergebe das Modell an Schnurrbart und Bindung wie folgt:

render: function(){ 
    //debugger; 
    var model = { 
     manager: this.model.toJSON(), 
     subordinates: this.model.reports.toJSON() 
} 

    console.log('render',this.model.toJSON()); // show the employee and the list of subordinates 
    this.el.innerHTML = Mustache.to_html(this.template, { employee_detail: model }); 
    } 

Meine Vorlage sieht wie folgt aus. Es eignet sich zum Binden und Anzeigen der Managervariablen, aber die untergeordneten Variablen werden nicht angezeigt. Ich möchte die Details eines Mitarbeiters anzeigen und dann alle seine Untergebenen auflisten.

{{#employee_detail}} 
<h3>{{manager.firstName}} {{manager.lastName}}</h3> 
<h4>{{manager.title}}</h4> 
<table class="table table-striped"> 
      {{#manager.managerId}} 
       <tr> 
        <td>Manager:</td> 
        <td><i class="icon-user"></i> <a href='#employees/{{manager.managerId}}'>{{manager.managerName}}</a></td> 
       </tr> 
      {{/manager.managerId}} 
      <tr> 
       <td>Office Phone:</td> 
       <td><i class="icon-home"></i> {{manager.officePhone}}</td> 
      </tr> 
      <tr> 
       <td>Cell Phone:</td> 
       <td><i class="icon-headphones"></i> {{manager.cellPhone}}</td> 
      </tr> 
      <tr> 
       <td>Email:</td> 
       <td><i class="icon-envelope"></i> <a href="mailto:{{manager.email}}">{{manager.email}}</a></td> 
      </tr> 
      <tr> 
       <td>Twitter:</td> 
       <td><i class="icon-retweet"></i> <a href="">{{manager.twitterId}}</a></td> 
      </tr> 
     </table> 
     <table> 
      <tr> 
       <td>Subordinates:</td> 
       <td><i class="icon-user"></i> <a href='#employees/{{subordinates.id}}'>{{subordinates.fullName}}</a> 
       </td> 
      </tr> 
     </table> 
{{/employee_detail}} 

Antwort

0

subordinates schlägt mir vor, dass Sie mit Array arbeiten. Wenn das der Fall ist, glaube ich, dass Sie über seine Elemente iterieren und jedes einzeln anzeigen sollten. Wenn ich richtig bin - Sie erhalten 2x undefiniert beim Aufruf {{subordinates.id}}'>{{subordinates.fullName}}, weil Arrays solche Eigenschaften nicht haben.

weitere Informationen über itarations über Arrays in Schnurrbart Sie in diesem Thema finden Sie unter: Mustache.js: Iterate over a list received via json

+0

Dank. Es ist eigentlich kein Array. Es ist ein JSON-Objekt. Ich habe im Grunde zwei Modelle (Backbone) in meinem Objekt. Es ist also ein Objekt namens Modell, das zwei verschachtelte Objekte hat, von denen das eine Manager und das zweite untergeordnet ist. Die Beziehung ist ein Manager und 0 zu vielen Untergebenen. –

Verwandte Themen