0

这个函数将是循环的,每个循环 key1 和 key2 都会改变......问题是数据库结果是一个数组,它不会获取键的每个数据,它只会记录最后一个数据。

GettingData: function(key1,key2){
       var list=[];
       console.log('Getting Data of '+key2);
       var ref = firebase.database().ref('/users/'+key1+'/products/'+key2).orderByKey().equalTo('name');
       ref.on('child_added', function(data) {
       console.log(data.val());
       list.unshift(data.val());
       this.databaseresult = list;
       console.log('Productdata of '+ key1 +' is LOADED');
       console.log('pushing to array '+list);
       console.log(this.databaseresult);
       this.$.results.products = this.databaseresult;
       }.bind(this));
       },
4

1 回答 1

0

更改属性时,如果您希望通知任何观察者,请使用this.set('propertyName', value);. 此外,当您this.$.results.products = this.databaseresult;使用当前代码进行设置时,即使使用 Polymer.set 方法,您也不会成为数据绑定,因为这需要使用聚合物数据绑定语法 IE <x-element products="{{databaseresult}}"></x-element>。至少据我所知,您也许可以手动强制它。通过调用this.fire('databaseresult-changed');事件。

GettingData: function(key1,key2){
  console.log('Getting Data of '+key2);
  var ref = firebase.database().ref('/users/'+key1+'/products/'+key2).orderByKey().equalTo('name');
  ref.on('child_added', function(data) {
    console.log('pushing value' + data.val() + 'to ' + this.databaseresult);
    this.push('databaseresult', data.val());
    console.log('Productdata of '+ key1 +' is LOADED');
  }.bind(this));
},

 <!-- One way binding -->
 <x-element id="results" products="[[databaseresults]]"></x-element>

 <!-- Two way binding -->
 <x-element id="results" products="{{databaseresults}}"></x-element>
于 2016-10-15T21:23:00.633 回答