聚合物 - 就绪事件但有界数据未就绪
Polymer - ready event but bounded data not ready
在 PolymerLabs 的 todo-list 应用程序中,我在 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>
..........
请问为什么在ready()
中user总是打印成undefined
?似乎在调用 ready()
时,边界数据尚未填充正确的数据。我什么时候才能可靠地知道边界数据何时已初始化?
当调用 ready()
时,这仅意味着 Polymer 已完成元素的创建和初始化。对 Firebase 的调用只是在此时调用,Polymer 不会等待对 Firebase 服务器的调用做出响应。这是由 <firebase-collection>
中的代码完成的,Polymer 并不知道。
当数据从服务器到达时,它被传递到 fbTodos
创建一个 属性 fbTodos
和 fbTodos
变化时执行的观察者。这个观察者会在数据到达时被调用。
属性:{
fbTodos: {
observer: '_dataArrvied'
},
user: {
observer: '_userChanged'
},
<firebase-collection>
元素不提供 firebase-value
事件,因此
on-firebase-value="_firebaseLoaded"
似乎是多余的。
我自己还没有用过这个元素。
在 PolymerLabs 的 todo-list 应用程序中,我在 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>
..........
请问为什么在ready()
中user总是打印成undefined
?似乎在调用 ready()
时,边界数据尚未填充正确的数据。我什么时候才能可靠地知道边界数据何时已初始化?
当调用 ready()
时,这仅意味着 Polymer 已完成元素的创建和初始化。对 Firebase 的调用只是在此时调用,Polymer 不会等待对 Firebase 服务器的调用做出响应。这是由 <firebase-collection>
中的代码完成的,Polymer 并不知道。
当数据从服务器到达时,它被传递到 fbTodos
创建一个 属性 fbTodos
和 fbTodos
变化时执行的观察者。这个观察者会在数据到达时被调用。
属性:{
fbTodos: {
observer: '_dataArrvied'
},
user: {
observer: '_userChanged'
},
<firebase-collection>
元素不提供 firebase-value
事件,因此
on-firebase-value="_firebaseLoaded"
似乎是多余的。
我自己还没有用过这个元素。