1

我正在做一个项目,我们创建了一个 Sencha Touch 2 版本的网站,我们获得的所有资源都是网站本身。

我的问题是我有一个 HTML 中的搜索结果列表,并希望将它们动态添加到列表中(例如,将所有元素映射到列表中的元素)

你对如何处理这个有什么想法吗?

列表中一个元素的 HTML 如下所示:

<li>
    <p><input type="checkbox" name="chk" value="FF032A" />
        <a href="/files/documentPage.html">Title</a>
    </p>
    <div class="long">
        <p>CATEGORY DESCRIPTION</p>
        <p>3/12/2012</p>
    </div>
</li>
4

1 回答 1

2

使用 Ext.DomQuery 系统地提取相关数据(使用元素选择器),然后将其构建到 JSON 数组中。然后,您可以使用原始数据(JSON 格式)导入存储,这将提供列表。

例如,我采用了您的示例代码,并将其复制了三次(因此您有三个要提取的列表项)。然后我将 Ext.DomQuery 与匹配的选择器一起使用,如下所示:

var listItems = Ext.DomQuery.select('li > div[class="long"]');

所以现在我们有了一个包含三个列表元素的数组,接下来我们需要从每个列表元素的内部元素构建一个对象。我们可以通过在新数组上使用本机 map 函数来做到这一点。这将获取数组中的每个项目,然后返回数据对象。数据对象是从

使用 item 元素下的子编号的元素。确保相应地更新您的键名。

var finalArray = listItems.map(function(item){
    var itemEl = Ext.get(item);
    return {
        description: itemEl.child('p:nth-child(1)').getHtml(),
        date: itemEl.child('p:nth-child(2)').getHtml()
    };
});

然后可以将这个新数组简单地转换为 JSON 字符串,例如:

var finalString = JSON.stringify(finalArray);

如果您需要静态数据,您可以将其复制并粘贴到您的 Sencha Touch 代码中,或者使用 JSON 数据执行任何其他操作。

于 2012-12-05T22:25:51.377 回答