使用铆钉js和骨干深度模型绑定和访问嵌套元素

时间:2014-03-28 11:55:40

标签: javascript backbone.js underscore.js backbone-events rivets.js

我们正在使用开源FormBuilder客户端组件并对其进行扩展以满足我们的要求。 Formbuilder是使用带有嵌套数据的Backbone Deep model编写的,对于绑定,它使用rivetsjs

这里的Formbuilder在github:https://github.com/dobtco/formbuilderbackbone 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也是一个索引数组。在rivetsjs中,我们可以使用rivetsjs .:运算符绑定一些东西。对于属性,我们可以使用:但我们无法访问嵌套索引数组中的元素。那么在使用nexted索引元素时是否可以访问和绑定铆钉中的元素?如果是,那我们该怎么做呢?还是有更好,更简单的方法来实现同样的目标?我是骨干以及铆钉的初学者所以我不确定这是否正确,所以请指导。

提前感谢。

1 个答案:

答案 0 :(得分:2)

如果我正确理解rivetsjs,:只是一个适配器的示例,如果您愿意,可以将^作为适配器分隔符。这意味着您还可以拥有和嵌套适配器。让:搜索第一级,然后^搜索1级更深。

您还可以构建更具适应性的适配器,以便更深入地获取对象。以下stackoverflow答案中的示例。您还可以在此处查看其他一些获取更深层嵌套对象的方法:

How to bind deeper than one level with rivets.js

希望这能解决您的问题