问题
如果准备好后,如何在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
。我试图通过丰富publish
和observe
对象来更自然地实现这一点,但我的方法不起作用。我想这是因为我对这些对象的消化过程迟了。那么,有什么方法可以解决这个问题吗?
上下文
我确实意识到我的目标有点奇怪,但有一个原因。我正在尝试创建一个桥接组件,在更改泛型属性时触发事件,其中在配置时给出事件名称和属性。这是一个简单的用例:
<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>
未答复的相关问题
答案 0 :(得分:0)
不确定是否可以,因为属性只加载一次。
如果我需要这样做,我只使用一个包含地图的属性{key:value}来管理,而不是像字符串这样的原语。然后观察属性并应用逻辑以了解如何处理新值。
希望这很有用