聚合物就绪事件但有限数据尚未就绪

时间:2016-03-05 04:02:12

标签: polymer polymer-1.0

PolymerLabs的待办事项列表应用中,我在todo-data.html中添加了ready()功能,如下所示:

<dom-module id="todo-data">

  <template>

  <style>

  </style>

  <firebase-collection location="{{userLocation}}"
                     data="{{fbTodos}}"
                     on-firebase-value="_firebaseLoaded">
  </firebase-collection>

  .....
</template>
<script>
  Polymer({

    is: 'todo-data',

  properties: {

    todos: {
      notify: true
    },

    user: {
      observer: '_userChanged'
    },

   .......

    ready: function() {
      console.log(this.user);
  }

});

user属性值从index.html绑定到它,如下所示:

//index.html 
<template is="dom-bind" id="app">

<todo-auth id="auth"
           user="{{user}}"
           location="[[firebaseURL]]"
           user="{{user}}">
</todo-auth>

<todo-data location="[[firebaseURL]]"
           todos="{{todos}}"
           user="{{user}}">
</todo-data>
..........

我可以知道为什么用户总是在undefined中以ready()打印出来吗?似乎在调用ready()时,有限数据尚未填充正确的数据。什么时候能可靠地知道有限数据何时被初始化?

1 个答案:

答案 0 :(得分:1)

调用ready()时,这仅表示Polymer已完成创建和初始化元素。 Firebase的调用仅在此时调用,而Polymer不会等待对Firebase服务器的调用进行响应。这是由<firebase-collection>聚合物不知道的代码完成的。

当数据从服务器到达时,它将传递给fbTodos

创建一个属性fbTodos以及fbTodos更改时执行的观察者。当数据到达时,将调用此观察者。

属性:{

fbTodos: {
  observer: '_dataArrvied'
},

user: {
  observer: '_userChanged'
},

<firebase-collection>元素未提供firebase-value事件

on-firebase-value="_firebaseLoaded"

似乎多余。

我还没有自己使用过这个元素。