似乎在通过至少2层getter使用single template时,绑定在基础值更改时不再更新。奇怪的是,这似乎使用iterative templates时,而不是工作。聚合物单个模板实例不更新
这是一个有点难以解释,我不是100%肯定这就是为什么绑定失败所以这里是一个最小(ISH)的例子来说明这个道理:
<polymer-element name="test-binding">
<template>
<template bind="{{ getterMap }}">
<span>{{ name }}</span>
</template>
</template>
<script>
(function(){
Polymer('test-binding', {
ready: function(){
var getterMap = {};
Object.defineProperty(this, 'getterMap', {
get: function(){ return getterMap; },
set: function(newValue){ getterMap = newValue; }
});
var name = 'foo';
Object.defineProperty(getterMap, 'name', {
get: function(){ return name; },
set: function(newValue){ name = newValue; }
});
setInterval(function(){
this.getterMap.name = 'foo '+Math.random();
}.bind(this), 2000);
}
});
})();
</script>
</polymer-element>
而这伴随而来的jsfiddle用它。
有一种方法可以通过访问器强制绑定更新,请参阅我在此聚合物[issue](https://github.com/Polymer/polymer/issues/277)中的评论。你介意相应地更新你的答案吗? – Renaud 2015-02-12 12:11:16
谢谢你! – 2015-02-16 19:16:53