2016-09-13 12 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がしか1400万範囲の値を持つ必要があり、他は小数と二桁でなければなりません。あなたのコードに存在している

+0

の独自のコピーを持っているように、この背後にある理由は、実際に問題に存在する情報の量のお手伝いをすることはできません。しかし、あなたのコードで見つけたいくつかの間違いは 'sparks'型は' Object'ですが、 'Array'を評価します。したがって、 'sparks'型を' Array'に変更し、配列とオブジェクトの両方で関数を使って値を返します(Polymer Recommendation) 'value:function(){return []}' – a1626

+0

Wow、問題。結局のところあなたはもっと情報を必要としなかったと思います! :) 回答として投稿できますか? –

答えて

1

ほとんど間違いが

  • sparkstypeObjectしかしvalueArrayです。したがって、sparks型を
  • に変更し、配列とオブジェクトの両方で関数を使用して値を返します。 Polymerの推奨に従って、常にオブジェクトと配列の値を返す関数を使用します。要素の各インスタンスは、オブジェクト/配列

    value:function(){ 
         return [] 
         }