如何在Polymer 1.0中调用默认行为的方法?

Ran*_*cid 2 behavior polymer-1.0

在聚合物1.0中,我有一个定义属性和方法的行为脚本:

<script>
dataBehavior = {
  properties: {
    data: {
      type: Array,
      value: null,
      observer: 'dataChanged'
    }
  },
  dataChanged: function(newValue, oldValue) {
    console.log('default stuff');
  }
};
</script>
Run Code Online (Sandbox Code Playgroud)

以及使用该行为的组件:

<dom-module id="my-module">
  <template>
  </template>
  <script>
  Polymer({
    is: "my-module",
    behaviors: [dataBehavior],
    dataChanged: function(newValue, oldValue) {
      // How to call the dataChanged method from dataBehavior?
      // this.super.dataChanged(); <- don't works!
      console.log('custom stuff');
    }
  });
  </script>
</dom-module>
Run Code Online (Sandbox Code Playgroud)

当我更改数据属性时,执行的方法来自my-module,因此它会生成"自定义内容".如果我删除my-module中的dataChanged方法,则执行"default stuff".

如何执行默认行为的方法和组件的方法?

如果可能,我不想将代码从"dataBehavior.dataChanged"复制到"my-module.dataChanged".我想在组件的方法中调用行为的方法; 我可以使用"超级"之类的东西来引用行为脚本吗?

非常感谢你的答案!

rku*_*usa 6

你也可以简单地打电话dataBehavior.dataChanged.call(this, newValue, oldValue):

<dom-module id="my-module">
  <template>
  </template>
  <script>
  Polymer({
    is: "my-module",
    behaviors: [dataBehavior],
    dataChanged: function(newValue, oldValue) {
      dataBehavior.dataChanged.call(this, newValue, oldValue)
    }
  });
  </script>
</dom-module>
Run Code Online (Sandbox Code Playgroud)