是否有可能在运行时发布新的聚合物组件属性?
<polymer-element name="dynamic-attributes">
<template></template>
<script>
Polymer('dynamic-attributes', {
ready: function(){
var attributes = new Thing().getAttributes();
this.publishAttributes(attributes); // imaginary method
},
});
</script>
</polymer-element>更多信息...
我正在编写一个封装Seriously.js的组件库。
以下是理想实现的一个示例。
<seriously-graph linear>
<seriously-source>
<img src="images/pencils.jpg">
</seriously-source>
<seriously-effect type="pixelate" pixelSize="{{pixelSize}}"></seriously-effect>
<seriously-effect type="blur" amount=".5"></seriously-effect>
<seriously-target width="411" height="425"></seriously-target>
</seriously-graph>我有一个使用MutationObserver来检测属性更改的工作。它可以工作,但之后我必须找到序列化的解决方案,并使属性getter/setters。这感觉就像我在重新发明轮子(聚合物),并希望有一个内置的方法来做到这一点。
发布于 2015-02-25 18:55:57
这是一个要旨,它做你要找的东西。基本上,它在第一次使用时会动态地创建一个具体的<polymer-element>,然后用动态创建的具体实例交换泛型实例,复制过程中的任何绑定声明。消息来源将是:
<seriously-effect type="blur" amount="{{someAmount}}"></seriously-effect>但是有了检查元素,你会发现:
<seriously-effect-blur amount="{{someAmount}}"></seriously-effect-blur>发布于 2015-02-14 20:18:34
是的,通过为发布节点分配属性对象是可能的。详情请参见https://www.polymer-project.org/docs/polymer/polymer.html#attributes。
您的方法必须返回一个属性对象:
Polymer('dynamic-attributes', {
publish: (new Thing()).getAttributes() || {}
});发布于 2015-02-24 12:40:29
也许您可以创建一个全局数组并将其用作属性?
<polymer-element name="app-globals" attributes="values">
<script>
(function() {
var values = {};
Polymer({
ready: function() {
this.values = values;
for (var i = 0; i < this.attributes.length; ++i) {
var attr = this.attributes[i];
values[attr.nodeName] = attr.value;
}
}
});
})();
</script>
</polymer-element>
<app-globals id='myDynamicFunctions' someFunction someOtherFunction></app-globals>
<script>
//then define it
document.$.myDynamicFunctions.values.someFunction = function(){...}
</script>我不太清楚你在找什么,这可能会给你一个提示.
https://stackoverflow.com/questions/28519217
复制相似问题