2016-11-30 2 views
1

Ich habe ein Objekt, das ich in meine Vorlage mit EJS übergeben und ich bekomme weiterhin eine Fehlermeldung Cannot read property 'link' of undefined, hier ist das Objekt und hier ist der Vorlagencode.Probleme beim Verweisen auf Objekt in EJS

ich console.log das Objekt und diese:

{ _id: 583e4b76f1c8771c17d68ef2, 
    username: 'asdf', 
    __v: 0, 
    favoriteMoments: [], 
    favoriteEvents: [], 
    likes: [], 
    friends: [], 
    moments: [], 
    categories: [], 
    events: 
    [ { _id: 583e4bf8cc11c61c2887aa38, 
     title: 'asdfasdf', 
     description: 'asdf', 
     __v: 0, 
     comments: [], 
     photos: [Object], 
     moments: [], 
     category: [Object], 
     owner: [Object] } 
] } 

Hier ist die Vorlage:

 <div class="well event_list_page_event_boxes masonry_box"> 
      <div class="img-responsive"> 
       <a href="/event/<%= events._id %>"> 
        <% if (events.photos.link === null){%> 
        <div class="event_list_page_event_photo"><p>No Image Here</p></div> 
        <% } else {%> 
        <img class="event_list_page_event_photo" src="<%= events.photos.link %>" border="0" style="max-width: 100%"> 

        <% } %> 
        <%}) %> 
        <div class="row"> 
         <div class="col-sm-9"> 
          <h4 class="event_list_page_event_header"><%= events.title %></h4> 
         </div> 
         <div class="col-sm-3"> 
          <p class="event_list_page_event_date"><%= events.date %></p> 
         </div> 
        </div> 
        <p class="event_list_page_event_description"><%= events.description %> </p> 
       </a> 
      </div> 
     </div> 

Ich verstehe, dass es nicht das events.photos Objekt zu sehen ist, aber ich bin nicht sicher, wie um es sichtbar zu machen, damit ich meine Daten anzeigen kann.

+0

Können Sie Ihre Frage mit dem Code aktualisieren Sie in den Ereignissen passieren verwenden Objekt? –

+0

Drucken Sie Ereignisse Array, so dass Sie seine Struktur kennen lernen und Sie Problem lösen können – AJS

Antwort

1

events ist ein Array so statt dessen:

events.photos.link 

Sie ein Array-Index zu verwenden, wie brauchen würde:

events[0].photos.link 

Oder Sie müssten iterieren die events Array.


Wenn Sie versuchen, einen neuen HTML-Block für jedes Ereignis in den events Array zu erstellen, dann müssen Sie eine Art Schleife in der Vorlage (wie eine for Schleife oder eine .forEach() Schleife) verwenden, so Sie können jedes Element des Arrays durchlaufen.

Es gibt ein ejs Beispiel einer for Schleife im Abschnitt dieses Artikels Vorlage erstellen: http://www.embeddedjs.com/getting_started.html

+0

Ich müsste durch das Array durchlaufen, ist das nicht, was 'object.keys' soll tun? – illcrx

+0

@illcrx - 'Object.keys()' ruft alle Eigenschaften eines Objekts ab. Es wird normalerweise nicht für Arrays verwendet. Wir können Ihnen nicht weiter helfen, ohne zu wissen, was Sie tatsächlich erreichen wollen. Deine Frage beschreibt das nicht. – jfriend00

+0

Ok, also sage ich, ich verwende einen Objektaufruf auf einem Array, oooohhh. Was ich versuche zu tun, ist alle "Ereignisse" Eigenschaften auf der Vorlage zu zeigen. Im ersten Code-Snippet sehen Sie einen 'Ereignis'-Schlüssel, der alle Ereignisse auflistet, das Beispiel hat nur ein Ereignis. Es wird viele Veranstaltungen geben. – illcrx

Verwandte Themen