2016-09-20 2 views
0

Эта функция будет циклической, и каждый цикл key1 и key2 будет меняться ... проблема в результатах базы данных, которая представляет собой массив, не получит все данные ключей, она будет записывать только последние данные ,Код массива Firebase-Polymer Проблемы

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)); 
     }, 

ответ

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> 
Смежные вопросы