2016-03-05 83 views
0

在从PolymerLabs待办事项列表应用就绪事件,但有界的数据,我加入待办事项,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> 
.......... 

我可以知道为什么用户总是打印为undefinedready()?看起来,当调用ready()时,有界数据还没有填充正确的数据。我什么时候可以可靠地知道有界数据何时被初始化?

回答

1

ready()被调用这仅意味着聚合物完成创建和初始化的元素。 Firebase的调用只在当时被调用,Polymer不会等待Firebase服务器的响应。这是通过<firebase-collection>中的代码完成的,聚合物不知道。

当数据从被当fbTodos改变执行它被传递给fbTodos

创建属性fbTodos服务器和和观察员到达。这个观察者将在数据到达时被调用。

属性:{

fbTodos: { 
    observer: '_dataArrvied' 
}, 

user: { 
    observer: '_userChanged' 
}, 

<firebase-collection>元件不提供firebase-value事件因此

on-firebase-value="_firebaseLoaded" 

似乎是多余的。

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

+0

感谢。我意识到,firebase-value事件是以某种方式解雇的。它可能来自嵌套元素。 :) – user3240644