polymer v1.2.3
我遇到了 Polymer 的问题,我不确定这是否是一个错误。
我有这个属性,我需要在 ready
回调中对其执行某些操作后将其设置为 null,但是似乎当我通过数据绑定(bind)初始化该属性时,该属性会重新设置-在我将其设置为空后初始化。
看下面的例子:
proxy-elm.html
<dom-module id="proxy-elm">
<template>
<x-foo it="[[prox]]"></x-foo>
</template>
<script>
Polymer({
is: 'proxy-elm',
properties: {
prox: String
}
});
</script>
</dom-module>
x-foo.html
<dom-module id="x-foo">
<template>
<div>...</div>
</template>
<script>
Polymer({
is: 'x-foo',
properties: {
it: String
},
ready: function () {
//some processing stuff
console.log(this.it);
this.it = '';
setTimeout(function () {
console.log("later -- " + this.it);
}.bind(this), 3000);
}
});
</script>
</dom-module>
Main.html
<proxy-elm prox="hi"></proxy-elm>
控制台
=>hi
=>
=>later -- hi
此问题仅在代理元素使用数据绑定(bind)时发生。如果我将代理元素设置为立即数,则控制台如下所示:
=>hi
=>
=> later --
这是期望的行为。
这是怎么回事?我要疯了!
最佳答案
这可能是由于初始化顺序造成的(参见 Documentation )
您可以尝试在代理的 ready()
函数中根据需要设置 x-foo
的值,如下所示:
<dom-module id="proxy-elm">
<template>
<x-foo id="xFoo" it="[[prox]]"></x-foo>
</template>
<script>
Polymer({
is: 'proxy-elm',
properties: {
prox: String
},
ready: function () {
this.$.xFoo.it = '';
}
});
</script>
</dom-module>
并保留x-foo
的ready()
函数用于您的具体处理!
关于javascript - 使用数据绑定(bind)时声明的属性被多次初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861697/