错误"未捕获的TypeError:无法设置属性' src' of null"在一个dom重复

时间:2017-10-07 20:43:12

标签: javascript polymer

我有一个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>

总是结果是一样的...... 任何想法?感谢

2 个答案:

答案 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)'行。

您尚未定义scoreoldscore。这是计算值而不是观察者。

因此,定义这些将解决问题。