Как я могу получить доступ к переменным внешней области видимости из {{каждого}} блока шаблона jQuery tmpl? - PullRequest
5 голосов
/ 06 декабря 2010

Например, в этом коде:

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

Первый ${id} печатает атрибут id внешнего объекта, а второй ${id} печатает так же, как ${user.id}. Я хочу захватить внешнюю область действия id из блока {{each}}.

Возможно ли это? Или я должен быть уверен, что назвал переменные так, чтобы подобное столкновение не происходило?

Ответы [ 4 ]

1 голос
/ 26 ноября 2012

Вы можете объявить переменную вне вашего {{каждого}} блока

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

и получить к ней доступ позже

${localVariable}
0 голосов
/ 25 мая 2011
<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>

Пример: http://jsfiddle.net/P4jGt/

0 голосов
/ 03 августа 2012

Простыми словами

используйте ${( $data.UserId = Id ),''} и позже используйте это внутри each как UserId

Вот мой код, который я использую в одном из скриптов

<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>
0 голосов
/ 06 декабря 2010

Вам нужно использовать родительский метод jquery

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

.parent () дает вам родительское свойство

...