如何在 Polymer 中触发 attributeChanged-Function
How to fire the attributeChanged-Function in Polymer
我有一个简单的 Polymer canvas 对象,如下所示:
<polymer-element name="canvas-diagram" attributes="type width height json">
<template>
<div id="canvasField">
Typ: {{type}}, Width:<input value="{{width}}">, Height:{{height}}, json:{{json}}
<div id="canvasContainer">
<canvas id="canvasObj" width="{{width}}" height="{{height}}"></canvas>
</div>
</div>
</template>
<script>
function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}
Polymer("canvas-diagram",{
type: "bar",
width: "300",
height: "200",
ready: function() {
console.log("this.ready()");
this.writeDiagram();
},
attributeChanged: function(attrName, oldVal, newVal) {
console.log("this.attributeChanged()");
console.log(attrName, 'old: ' + oldVal, 'new:', newVal);
this.writeDiagram();
},
writeDiagram : function(){
[...]
},
json: {
data:[
{"name":"Texts","value":"150"},
{"name":"Videos","value":"50"},
{"name":"Audio","value":"30"},
{"name":"Test","value":"20"},
{"name":"Test","value":"20"},
{"name":"Test","value":"20"}
]}
});
</script>
</polymer-element>
但是当我手动更改属性时,attributeChanged() 函数不会触发。我究竟做错了什么?我我有绑定的输入three。当我从 canvas-diagram-Element.
更改属性时,更改它也不会触发函数 ald
这取决于属性的变化。我不认为有一种全球性的方式来检查所有归因于变化。我很确定你必须自己检查每个属性是否有变化。例如,如果我想知道你的元素的类型属性何时改变,我会使用像这样的函数。
typeChanged: function () {
console.log(this.type);
}
然后你需要为每个属性创建一个类似上面的函数,你需要一个函数在更改时触发。
编辑:下面是我能想到的最简单的例子。该按钮将更改元素的文本属性,更改将触发触发警报的 textChanged 函数。
我有一个简单的 Polymer canvas 对象,如下所示:
<polymer-element name="canvas-diagram" attributes="type width height json">
<template>
<div id="canvasField">
Typ: {{type}}, Width:<input value="{{width}}">, Height:{{height}}, json:{{json}}
<div id="canvasContainer">
<canvas id="canvasObj" width="{{width}}" height="{{height}}"></canvas>
</div>
</div>
</template>
<script>
function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}
Polymer("canvas-diagram",{
type: "bar",
width: "300",
height: "200",
ready: function() {
console.log("this.ready()");
this.writeDiagram();
},
attributeChanged: function(attrName, oldVal, newVal) {
console.log("this.attributeChanged()");
console.log(attrName, 'old: ' + oldVal, 'new:', newVal);
this.writeDiagram();
},
writeDiagram : function(){
[...]
},
json: {
data:[
{"name":"Texts","value":"150"},
{"name":"Videos","value":"50"},
{"name":"Audio","value":"30"},
{"name":"Test","value":"20"},
{"name":"Test","value":"20"},
{"name":"Test","value":"20"}
]}
});
</script>
</polymer-element>
但是当我手动更改属性时,attributeChanged() 函数不会触发。我究竟做错了什么?我我有绑定的输入three。当我从 canvas-diagram-Element.
更改属性时,更改它也不会触发函数 ald这取决于属性的变化。我不认为有一种全球性的方式来检查所有归因于变化。我很确定你必须自己检查每个属性是否有变化。例如,如果我想知道你的元素的类型属性何时改变,我会使用像这样的函数。
typeChanged: function () {
console.log(this.type);
}
然后你需要为每个属性创建一个类似上面的函数,你需要一个函数在更改时触发。
编辑:下面是我能想到的最简单的例子。该按钮将更改元素的文本属性,更改将触发触发警报的 textChanged 函数。