在结构化对象中实现双向数据绑定

时间:2015-06-05 09:10:18

标签: polymer polymer-1.0

我试图更新我的项目以使用Polymer 1.0,并且我已经卡在整个双向绑定和通知系统上。 Polymer 0.5为你解决了这个问题,我似乎无法在1.0中做到这一点。

我必须为我的API创建一个对象:

{
    "create": [{
        "classes": ["Person"],
        "HasName": [{
            "givenNames": ["Paula"],
            "familyNames": ["Vaandrager"]
            }]
        }, {
            "id": "bvhme",
            "classes": ["Person", "User"],
            "HasName": [{
                "givenNames": ["Boris", "Hendrik"],
                "familyNames": ["van Hoytema"]
            }, {
            "givenNames": ["Boris", "Hendrik"],
            "familyNames": ["Vaandrager"]
            }]
        }]
    }

我已经弄清楚如何使用dom-repeat元素渲染它,但是如果我在每次更改时都进行了铁输入,则更改不会传播到我的模型中。

理想情况下,我甚至可以创建一个元素来编辑每个对象及其中的子对象。但是,如果我必须指定可能发生的每一个通知,我会感到不知所措的复杂性,除了我不理解这些事情的作用。

3 个答案:

答案 0 :(得分:1)

您可以使用deep path observation绑定复杂对象。

绑定看起来像data="{{object.*}}"

答案 1 :(得分:1)

看起来您正在考虑如何观察数组的更改,如果是这样,我建议您查看Polymer 1.0 'array-style' path accessors, alternative to bracket notation in expressions中的答案

一般来说,你的解决方案应该包括深度路径观察者,如Zikes所说并通知:各种值都是真的。

properties: {
  fields: {
    type: Array,
    notify: true
  },
},
someFunction: function() {
  this.set('fields.' + index, value);
}

如果您需要观察数组的添加和删除,请查看数组拼接观察者https://www.polymer-project.org/1.0/docs/devguide/properties.html#array-observation

答案 2 :(得分:0)

事实证明我遇到的麻烦是聚合物无法观察由字符串组成的数组。所以你必须使用对象数组。