我有一个dom-repeat,我想根据函数插入带有src的图像。这次使用函数中的索引并没有解决问题,现在我陷入了困境。聚合物版本是1.8.0 到目前为止,我尝试过不同的方式,最后一个是:
<template is="dom-repeat" items="{{top.top}}" as="item">
<img id="testid" src="{{imgurl}}">
</template>
<script>
Polymer({
is: 'test',
ready: function() {
// Polymer.dom(this).querySelector('testid').src = this.imgurl;
this.$.testid.src = this.imgurl;
} ,
properties: {
top: {
type: Array,
value: function() { return []; }
},
imgurl: {
type: String,
notify: true,
reflectToAttribute: true,
computed: 'changeimg(score, oldscore)'
}
},
changeimg: function(score, oldscore) {
if( score>oldscore ){url = "images/reddown.png";}
else if(score<oldscore){url ="images/greenup.png";}
else {url = "images/blueorizontal.png";}
return url;
},
....
});
</script>
总是结果是一样的...... 任何想法?感谢
答案 0 :(得分:1)
loadChildren
仅适用于首次创建时元素的元素。使用this.$
或dom-repeat
时情况并非如此,因此dom-if
不存在,导致您看到的错误。
使用this.$.testid
的其他尝试也只会返回一个img元素,但在渲染时,每个得分条目都会有一个img元素。
计算属性querySelector
也不会对你有所帮助,因为你的元素只有一个imgurl属性,即使提供了分数值,它也总是相同的,无论显示什么分数条目。
解决问题的方法是使用computed binding为每个显示的分数计算正确的img src。
imgurl
答案 1 :(得分:0)
问题在于computed: 'changeimg(score, oldscore)'
行。
您尚未定义score
和oldscore
。这是计算值而不是观察者。
因此,定义这些将解决问题。