0

所以我有一个类似模板的脚本,我试图用 jQuery 解析它。问题是我有某些标签要替换为数据,这通常没问题,但我想遍历对象属性,这使得它变得更加困难。

我想尽可能少地依赖外部库,所以我这里只使用 jQuery。我知道 Angular 在这里可能会有所帮助,但我还不知道。

模板代码如下所示:

<?xml version="1.0" ?>
<div id="test">
    <each obj="list">
        <div class="listdiv">
            <span><value>thing</value></span>
            <span><value>thing2</value></span>
            <span><value>thing3</value></span>
            <div>
                <each obj="moreStuff">
                    <span>blah: <value>blah</value></span>
                    <span>foo: <value>foo</value></span>
                </each>
            </div>
        </div>
    </each>
</div>

我想传入以下 JSON 对象:

{
    list: [
        { thing: 3, thing2: 4, thing3: 5, moreStuff: [{blah:1, foo:2},{blah:4, foo:6}] },
        { thing: 1, thing2: 1, thing3: 2, moreStuff: [{blah:4, foo:6}] }
    ]
}

我想要的是它出来:

<div id="test">
    <div class="listdiv">
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <div>
            <span>blah: 1</span>
            <span>foo: 2</span>
            <span>blah: 4</span>
            <span>foo: 6</span>
        </div>
    </div>
    <div class="listdiv">
        <span>1</span>
        <span>1</span>
        <span>2</span>
        <div>
            <span>blah: 4</span>
            <span>foo: 6</span>
        </div>
    </div>
</div>

我让它与正则表达式一起正常工作,但当然使用 DOM 操作更干净,而且这样做也更具可扩展性。引起麻烦的是标签的递归性质以及标签必须从其父级获取数据<each>的事实。<value>

我已经尝试了很多方法来做到这一点,但每次我遇到递归问题(无限递归,我无法让它替换东西)或者它无法正确提取数据。有没有办法很好地做到这一点?

4