2016-09-13 3 views
0

У меня есть следующий обратный вызов в полимерном элементе, который должен только срабатывать, когда данные принимаются с определенным значением dataid.Конфликт в обратном вызове?

Polymer({ 
    is: 'widget-singlevalue', 
    properties: { 
     dataid: { 
      type: String 
     }, 
     value: { 
      type: String, 
      value: 'Loading' 
     }, 
     sparks: { 
      type: Object, 
      value: [] 
     } 
    }, 
    ready: function() { 
     console.log(this.dataid); 
     var self = this; 
     registerCallback(this.dataid, function (data) { 
      var y = data.data[0]; 
      var i = y[Object.keys(y)[0]]; 
      self.push('sparks', i); 
      console.log(self.dataid + ": " + self.sparks); 
      self.value = i; 
     }); 
    } 
}); 

элементы:

<widget-singlevalue name="Retrieves Per Minute" dataid="AvgRetPerMin"></widget-singlevalue> 

<widget-singlevalue name="Total" dataid="Total"></widget-singlevalue> 

value кажется всегда быть правым, однако, когда я смотрю на sparks массивы на каждом виджете/элемент, они смешиваются. Вот мой текущий консольный вывод:

AvgRetPerMin: 63.81,63.81,14891940,14891940,57.67,57.67,14892034,14892034,57.33,57.33 
Total: 63.81,14891940,14891940,57.67,57.67,14892034,14892034,57.33,57.33,14892034 

Total.Sparks должны всегда иметь значения в пределах 14 миллионов, другие должны быть двузначными цифрами с запятой.

+0

не может реально помочь вам с количеством информации, представленной в этом вопросе. Но некоторые ошибки, которые я нашел в вашем коде, - это тип 'sparks' - это' Object', но значение 'Array'. Поэтому измените тип 'sparks' на' Array' и для обоих массивов и объектов используйте функцию для возврата значения (рекомендация полимера) 'значение: function() {return []}' – a1626

+0

Ничего себе, поэтому исправление этих двух вещей фактически кажется исправленным проблема. Угадайте, что вам больше не нужна информация! :) Можете ли вы разместить ответ, пожалуйста? –

ответ

1

Несколько ошибок, которые, которые присутствуют в вашем коде

  • sparkstype является Object но valueArray. Так что измените sparks на Array
  • И для обоих массивов и объектов используйте функцию для возврата значения. В соответствии с рекомендацией Polymer всегда используется функция для возврата значения для объекта и массивов. Причиной этого является так, что каждый экземпляр элемента имеет свою собственную копию объекта/массива

    value:function(){ 
         return [] 
         } 
    
Смежные вопросы