2016-03-23 10 views
1

Bir master-detay senaryom var. Kullanıcı listem için paper-datatable by David Mulder kullanıyorum. Veriler, Firebase koleksiyonuyla doldurulur Bir satıra dokunduğunuzda, seçilen kullanıcının detayları ile birlikte bir kağıt iletişim kutusu açılır. Bir alanı düzenlemeye çalışırken, bir tuşa basıldıktan sonra ateşböceği güncellemesi durur.firebase-collection: giriş değeri sadece ilk tuş vuruşu güncellendi

Neyi eksik?

<dom-module id="user-list"> 
    <template> 
     <style> 
     :host { 
      @apply(--layout-vertical); 
     } 

     #editDialog { 
      min-width: 500px; 
     } 
     </style> 
     <firebase-collection location="https://<FIREBASE_APP>.firebaseio.com/users" data="{{users}}"></firebase-collection> 

     <paper-dialog id="editDialog" entry-animation="scale-up-animation" exit-animation="fade-out-animation" with-backdrop> 
      <div> 
       <paper-input value="{{selectedUser.name}}" label="Name" class="flex"></paper-input> 
       <paper-input value="{{selectedUser.username}}" label="Username" class="flex"></paper-input> 
      </div> 
      <div class="buttons"> 
       <paper-button dialog-confirm autofocus>Ok</paper-button> 
      </div> 
     </paper-dialog> 

     <paper-datatable id="datatable" selected-item="{{selectedUser}}" selectable on-row-tap="_onDetail" data="{{users}}"> 
      <div no-results> 
       Loading or no more items... 
      </div> 
      <paper-datatable-column header="Name" property="name" type="String" sortable style="min-width: 160px"></paper-datatable-column> 
      <paper-datatable-column header="Username" property="username" type="String" sortable style="min-width: 40px"></paper-datatable-column> 
     </paper-datatable> 
    </template> 
    <script> 
    Polymer({ 
     is: 'user-list', 

     behaviors: [ 
      Polymer.NeonAnimatableBehavior 
     ], 

     properties: { 
      type: String, 
      selectedUser: { 
       type: Object, 
       notify: true 
      }, 
      users: { 
       type: Array, 
       notify: true 
      }, 
      animationConfig: { 
       value: function() { 
        return { 
         'entry': { 
          name: 'fade-in-animation', 
          node: this 
         }, 
         'exit': { 
          name: 'fade-out-animation', 
          node: this 
         } 
        } 
       } 
      } 
     }, 

     _onDetail: function() { 
      var dialog = document.getElementById('editDialog'); 
      if (dialog) { 
       dialog.open(); 
      } 

     } 
    }) 
    </script> 
</dom-module> 

cevap

1

O bir dizi benzeri yapısında var verilerle bir Firebase konuma bir bakış daha var, firebase-collection anda bu şekilde kullanılmak üzere tasarlanmamıştır görünüyor. Yeni öğeler ekleyebileceğiniz/silebileceğiniz ancak mevcut olanları güncellemediğiniz istisna olmakla birlikte. Bakınız https://elements.polymer-project.org/elements/firebase-element?active=firebase-collection.

Bu, koleksiyondaki her öğenin, söz konusu öğeyi doğrudan firebase'de güncellemek için kullanabileceğiniz bir __firebaseKey__ özelliğine sahip olduğunu söyledi.