当组件准备就绪时,如何在Polymer中动态注册新属性

How can I dynamically register new attributes in Polymer when a component is ready?

本文关键字:新属性 注册 动态 属性 Polymer 准备就绪 组件      更新时间:2023-09-26

问题

一旦web组件准备就绪,我如何在其中动态注册新属性?

问题

让我们假设我们有一个天真的web组件,如下面[1]所示:

<polymer-element name="wc-bridge">
  <script>
    Polymer ('wc-bridge', {
      publish: {
        x: 0
      },
      observe: {
        x: 'xfn'
      },
      created: function () {
        this.publish.y=0;
        this.observe.y='yfn';
      },  
      xfn: function (ov, nv) {
        console.log ({key:'x', old: ov, new: nv});
      },
      yfn: function (ov, nv) {
        console.log ({key:'y', old: ov, new: nv});
      },
    });
  </script>
</polymer-element>

[1] 。http://jsbin.com/yakisayiwi/1

可以看出,x是在设计时绑定到xfn处理程序的属性。我还想在组件准备好后绑定一个新的属性y。我已经尝试过用我想的更自然的方式,通过丰富publishobserve对象来实现这一点,但我的方法不起作用。我想这是因为我在消化那些物体的过程中迟到了。那么,有什么办法可以解决这个问题吗?

上下文

我确实意识到我的目标有点奇怪,但这是有原因的。我正在尝试制作一个桥接组件,该组件在通用属性更改时触发事件,其中事件名称和属性都是在配置时给定的。这里有一个简单的用例:

<wc-bridge x="{{v}}" y="{{v}}"> <!-- x & y are unknown at design time -->
  <wc-bridge-event on="x" fire="e1"/> <!-- x & e1 are known by digesting this -->
  <wc-bridge-event on="y" fire="e2"/> <!-- y & e2 are known by digesting this -->
</wc-bridge> 

未回答的相关问题

http://goo.gl/xzKPKw

不确定是否可以,因为属性只加载一次。

如果需要这样做,我只使用一个包含映射的属性{key:value}作为值来管理,而不是使用类似于基元的字符串。然后观察属性并应用逻辑来了解如何使用新值。

希望这是有用的