【问题标题】:Access data array in Kendo template访问剑道模板中的数据数组
【发布时间】:2014-03-17 16:31:35
【问题描述】:

我有一个 Kendo 移动视图,它以 JSON 提要的形式获取数据,然后使用 Kendo 模板显示它。

我想从这个 JSON 提要中创建一个相当复杂的网格,我能想到的唯一方法是将某些项目包装在 div 中,其类名取决于其在数组中的位置.

如何访问剑道模板中的数组对象?

The docs 举个例子:

例如,要使用 JavaScript 和 Kendo UI 模板显示项目列表,我们使用以下语法:

<script id="javascriptTemplate" type="text/x-kendo-template">
    <ul>
    # for (var i = 0; i < data.length; i++) { #
        <li>#= data[i] #</li>
    # } #
    </ul>
</script>

如果我在模板中执行这样的 console.log:

# console.log(data); #

我可以看到 data 确实引用了 JSON,但它不可用 (data.length) 返回未定义,因此该示例什么也不做。

【问题讨论】:

    标签: javascript jquery arrays json kendo-mobile


    【解决方案1】:

    您将 JSON 对象视为列表。它是一个对象。

    var count = Object.keys(data).length;
    alert(count);
    

    所以我们知道 Object.keys(data).length 计算了所有的键。因此,有理由我们可以单独选择这些键。对象.keys(数据)[i]。您可以遍历它并为每 2n+2 个项目使用一个 IF 包装它。

    for (var i = 0; i < Object.keys(data).length; i++) {
        if (i%2 == 0) {
            # this will do something for every even element
        };
    }
    

    我建议用一个类来包装所有东西(所以不要使用 if 语句)。然后使用 CSS 选择器 2n+2(如果你想用 CSS 完成一些事情)。

    【讨论】:

    • 谢谢 - 我知道我错过了一些基本的东西,但我发现 Kendo 文档通常难以理解/过时。似乎在模板中访问数组应该非常简单。如果我在控制台中有对示例对象的引用,那么发布示例对象的最佳方式是什么(为这样一个可怕的问题道歉)?
    • @CherryFlavourPez 你可以 console.log(data);或者你可以 JSON.stringify(data);甚至 console.dir(data);
    • @CherryFlavourPez 是的,我给你的方法会奏效。它基本上返回对象的大小(在本例中为 9)。
    • 好的,所以如果我这样做 data.toJSON(); 我会得到我期望的数组(这不是文档所说的,并且看起来很奇怪,因为它似乎已经在某个时候完成了...... )。所以非常感谢。例如,我将如何将每个 2n+2 项包装在一个特定的类中?
    • 干杯 - 完美。我需要循环,因为我想要实现的(不幸的是)不能单独通过 CSS 完成。我必须将多个项目包装在一个 div 中。感谢您的帮助。
    【解决方案2】:

    我建议你使用 CSS 选择器 nth-child。

    div:nth-child(2n){
     ...
    }
    

    【讨论】:

    • 不幸的是,我试图实现的布局意味着我需要将多个项目包装在一个类中(不能单独使用 CSS)。我需要访问数组。
    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多