使用Rivets.js和Backbone deep模型绑定和访问嵌套元素

rt4zxlrg  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(118)

我们正在使用一个开放源代码FormBuilder客户端组件,并对其进行扩展以满足我们的需求。Formbuilder是使用Backbone Deep model编写的,其中包含嵌套的数据,对于绑定,它使用Rivets.js。
下面是GitHub上的表单生成器:https://github.com/dobtco/formbuilder和这里的backbone deep model在GitHub上:https://github.com/powmedia/backbone-deep-model
现在,我们在视图中使用嵌套元素,这些元素在结构中嵌套,如以下JSON所示:

{
    "fields": [{
        "label": "Untitled",
        "field_type": "checkboxes",
        "required": true,
        "field_options": {
            "options": [{
                "label": "test",
                "checked": false
            }, {
                "label": "",
                "checked": false
            }]
        },
        "rules_data": {
            "rules": [{
                "ruleId": "rule6",
                "criterias": [{
                    "condition": "if",
                    "responseTo": "",
                    "userOption": ""
                }],
                "branchTo": [{
                    "branch": "test"
                }, {
                    "branch": ""
                }, {
                    "branch": ""
                }]
            }]
        },
        "cid": "c2"
    }]
}

这里有一个规则数组,那么规则在每个索引处都有更多的数据,其中一个是branchTo,现在branchTo也是一个索引数组。在Rivets.js中,我们可以使用Rivets.js .:操作符绑定某些内容。对于属性,我们可以使用:,但我们无法访问嵌套索引数组中的元素。
那么,是否有可能在使用nexted索引元素的同时访问和绑定 rivets 中的元素?如果有,那么我们如何才能做到这一点?或者有更好更简单的方法来完成同样的目标吗?我是初学者在 Backbone 以及 rivets ,我不确定这是否是正确的方式。

3ks5zfa0

3ks5zfa01#

如果我对rivetsjs的理解正确的话,:只是一个适配器的例子,如果你愿意的话,你可以用^作为一个适配器分隔符。这意味着你也可以同时使用和嵌套适配器。让:搜索第一层,然后让^搜索更深的一层。
你也可以构建一个适应性更强的适配器,让对象更深。下面是stackoverflow答案中的例子。你也可以在这里看到一些其他的方法来获取更深的嵌套对象:
How to bind deeper than one level with rivets.js
希望这能解决你的问题

相关问题