如何从jQuery tmpl模板的{{each}}块中访问外部作用域的变量?

时间:2010-12-06 04:51:23

标签: jquery jquery-templates

例如,在此代码中:

<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 个答案:

答案 0 :(得分:1)

您可以在{{each}}块

之外声明变量
${( $data.localVariable = $id ),''}

并在以后访问

${localVariable}

答案 1 :(得分: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>

示例:http://jsfiddle.net/P4jGt/

答案 2 :(得分:0)

简单来说就是

使用${( $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>

答案 3 :(得分:-1)

您需要使用jquery的父方法

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

.parent()为您提供parent属性