2010-12-06 4 views
5

Zum Beispiel in diesem Code:Wie kann ich auf Variablen eines äußeren Bereichs innerhalb eines {{jeder}} Blocks einer jQuery tmpl-Vorlage zugreifen?

<div id="user_collection_requests-${id} table-cell" class="user_collection_requests"> 
     {{if requests}} 
      {{each(i, user) requests}} 
       <div id="user_collection_request-${id}-${user.id}" ... 
      {{/each}} 
     {{/if}} 
    </div> 

Die ersten ${id} druckt das id Attribut des äußeren Objekt, aber die zweite ${id} druckt die gleiche wie ${user.id}. Ich möchte den äußeren Bereich id aus dem {{each}} Block greifen.

Ist das möglich? Oder muss ich sicher sein, die Variablen so zu benennen, dass eine Kollision wie diese nicht auftritt?

+0

Ich dachte das auch. 'item.parent' ist leider nicht definiert. –

Antwort

-1

Sie benötigen jQuerys Eltern Methode

http://api.jquery.com/parent/ 

.parent() gibt Ihnen die Eltern

+0

Er fragt nicht nach dem DOM, er fragt nach jQuery Datenvorlagen. –

+0

@mu, im Kommentarbereich der Dokumentation erwähnt ein Typ, dass er $ {$ (item) .children(). Length} tun kann, also liegt es nahe, dass parent() tatsächlich in Ordnung ist, wenn das Element bereits existiert hat verwandelte sich in ein jquery Objekt. nur ein Gedanke. –

0
<script id="template" type="text/x-jquery-tmpl"> 
    <div id="user_collection_requests-${id} table-cell" class="user_collection_requests"> 
     {{if user}} 
      {{each user}} 
       <div id="user_collection_request-${$data.id}-${id}"></div> 
      {{/each}} 
     {{/if}} 
    </div>  
</script> 

Beispiel Eigentum zu verwenden: http://jsfiddle.net/P4jGt/

0

In einfachen Worten

Verwendung ${($data.UserId = Id),''} und später verwenden Sie das innerhalb.210 als UserId

Hier ist mein Code, die ich in einem der Skripte bin mit

<script id="templateFolderTop" type="text/html"> 
    <li> 
     ${($data.ParentTagSlug = Tag.replace(/[^a-zA-Z0-9_]/g,'-')),''} 
     <span class="CAPS"> 
      <a id="${ParentTagSlug}" onclick="_NewsManager.FolderSubCall(${Id})"></a> 
      <a href="#${ParentTagSlug}" class="top_menu_href" >${Tag}</a> 
     </span> 
     {{if ChildList.length}} 
     ${($data.ParentTag = ParentTagSlug),''} 
     <div class="dropdown_2columns"> 
      <div class="col_1 firstcolumn"> 
       <ul> 
        {{each ChildList}} 
        ${($data.TagSlug = Tag.replace(/[^a-zA-Z0-9_]/g,'-')),''} 
        <li> 
         <a id="${ParentTag}-${TagSlug}" onclick="_NewsManager.NewsListCall(${Id})"></a> 
         <a href="#${ParentTag}-${TagSlug}" >${Tag}</a> 
        </li> 
        {{/each}} 
       </ul> 
      </div> 
     </div> 
     {{/if}} 
    </li> 
</script> 
1

Sie können eine Variable außerhalb Ihres {{jedes}} Block

${($data.localVariable = $id),''} 

und greifen Sie erklären innen später

${localVariable} 
Verwandte Themen