【问题标题】:Conditionals in jQuery templatesjQuery 模板中的条件
【发布时间】:2011-09-25 14:07:56
【问题描述】:

我有一个这样的 jquery 模板设置:

<script id='tmpl-video_list' type='text/x-jquery-tmpl'>
<li>
    <a href='${url}'><br/>
        <span class='image_border'>
            <span class='image_container'>
                <img src='${thumb}' alt='' title='' />
            </span>
        </span>
    </a>
    <div class='search_block'>
        <span class='name'>${caster_name}</span>
            <a href='${url}'>
                <span class='search_title'>${title}</span>
            </a>
    </div>
</li>

我发送的数据看起来像这样:

{
    _index:i,
    url: url,
    thumb: thumb,
    name: name,
    title: title
}

一切都很好。我的问题是,是否有办法在其中放置条件。我知道 {{if}} 以及文档中所述的内容,但我想知道您是否可以这样做:

{{if ${_index}+1 % 5 == 0}} class='last_search_video' {{/if}}

我试过了,但没有用。我实际上不喜欢我的对象中的_index,但我想我会给它一个改变。我正在考虑将当前索引传递到模板的循环中,但我不知道。

我没有与 jQuery 的模板插件结婚,所以如果有人知道更好的插件,请随时推荐另一个。

【问题讨论】:

  • 你到底想做什么?

标签: jquery jquery-templates


【解决方案1】:

您不必在{{if}} 中“模板化”_index 属性。你可以写

{{if (_index + 1) % 5 == 0}} class='last_search_video' {{/if}}

【讨论】:

  • 那行不通。为什么会这样,因为找不到 _index 值。
  • @locrizak:好吧,我假设您将其放入模板中,其中 _index 将在运行时定义并来自您的数据。
  • 正确,但我假设如果您想使用数据中的某些内容,您需要使用 ${} 调用它,以便正则表达式可以获取它。我确实尝试过,但没有运气。您还有其他想法吗?
  • 对不起,我明白你现在在说什么,但就像我说的那样,它仍然没有用。感谢您的意见
【解决方案2】:

我实际上不喜欢我的 _index 对象

好消息!你实际上并不需要它。使this excellent question and answer 适应您的问题,您需要做一些事情来更容易找到您正在呈现的当前项目的索引:

  1. .tmpl()options参数中添加一个函数,可以用来检索当前项的索引:

    $("#tmpl-video_list").tmpl(data, {
        getIndex: function(item) {
            return $.inArray(item, data);
        } 
    });
    
  2. 修改您的模板以使用该功能:

    <script id='tmpl-video_list' type='text/x-jquery-tmpl'>
        <li {{if $item.getIndex($item.data) + 1 % 5 === 0 }} class='last_search_video' {{/if}}>
            <!-- etc., etc., -->
        </li>
    </script>
    

这是一个简化的工作示例:http://jsfiddle.net/gsd6D/

【讨论】:

  • Siiiick,我实际上只是在我应该首先完成的文档中阅读了这一点。正是我想要的干净整洁的东西,谢谢
猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 2015-11-24
  • 2013-12-19
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
相关资源
最近更新 更多