【问题标题】:Two-way data binding through property-changed does not work for dom-bind通过属性更改的双向数据绑定不适用于 dom-bind
【发布时间】:2015-09-04 16:07:00
【问题描述】:

我正在尝试使 Polymer 的双向数据绑定与自动绑定 dom-bind 中的本机自定义元素一起工作。 我关注the docs,上面写着:

将 Polymer 元素与其他元素或框架一起使用时,您可以手动将 on-property-changed 侦听器附加到要通知属性更改的元素,并根据新值采取必要的操作。

所以我创建了一个元素,并将绑定绑定到它:

<my-element notify="{{text}}"></my-element>

然后,为了遵循通知协议,我将侦听器附加到 property-changed 事件,我尝试通过 addEventListeneron-property-changed 属性附加它们,但这些都不起作用。

属性已更改,但我没有收到任何通知,也无法使用它。

现场示例:http://jsbin.com/dijequ/edit?html,output

我在dom-bind 元素中使用它,我不能使用$=,因为我需要直接属性绑定,因为在我的实际情况中我需要绑定到共享数据对象。

这是 Polymer 中的错误、文档中的错误,还是我做错了什么?如何获得有关属性更改的通知?

【问题讨论】:

    标签: javascript data-binding polymer


    【解决方案1】:

    我发现的唯一解决方案是只定义普通的 JS setter。

    因此,通过忽略 Polymer 的协议,我们可以获得与框架无关的功能:

    MyElementPrototype.createdCallback = function(event){
      var notify= null;
      Object.defineProperty(this, "notify",{
        set: function(newValue){
          notify = newValue;
          console.log('setter was notified');
        },
        get: function(){
          return notify;
        }
      });
    };
    

    工作示例:http://jsbin.com/bezuya/edit?html,output

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 2015-12-15
      • 2021-01-31
      • 2018-01-03
      • 1970-01-01
      • 2016-06-06
      • 2020-01-02
      相关资源
      最近更新 更多