Jea*_*eri 3 javascript firebase polymer firebase-realtime-database polymer-1.0
我正在尝试使用Polymer 1.0设置firebase连接:
<link rel="import" href="/bower/firebase-element/firebase-document.html">
...
<firebase-document id='fstats'
location="https://polymer-redux.firebaseio.com/stats"
log="true"
data="{{stats}}"></firebase-document>
...
this.properties = {
stats: {
type: Object,
observer: '_handleFirebaseStats',
notify: true
}
...
_handleFirebaseStats(stats) {
...
}
Run Code Online (Sandbox Code Playgroud)
这是我的firebase db的样子:
{
...
stats: { count: 0 }
}
Run Code Online (Sandbox Code Playgroud)
现在,在_handleFirebaseStats
我收到的内心{ count: 0 }
,那部分很有效.但我还想将数据保存回firebase.我试过了:
this.$.fstats.set({count: 2});
this.$.fstats.set({stats: {count: 2}});
this.stats.count = 2;
// etc
Run Code Online (Sandbox Code Playgroud)
无论如何,无论我在我的聚合物应用程序中尝试什么,FireBase永远不会更新.有关如何更新firebase的任何建议?
根据我最初的假设(完全错误),我认为行为与firebase-document
元素有关,事实上,行为在Polymer的数据绑定系统中已经很好地定义了.
this.stats = {count: 2};
Run Code Online (Sandbox Code Playgroud)
this.stats.count = 2;
this.notifyPath('stats.count', this.stats.count);
Run Code Online (Sandbox Code Playgroud)
this.set('stats.count', 2);
Run Code Online (Sandbox Code Playgroud)
直接来自文档:
该系统"正常工作"到对象子属性的更改由于绑定到更改的通知自定义元素属性而发生.但是,有时命令式代码需要直接更改对象的子属性.由于我们避免使用更复杂的观察机制(如Object.observe或脏检查)以便为最常见的用例实现跨平台的最佳启动和运行时性能,因此直接更改对象的子属性需要用户的协作.
具体来说,Polymer提供了两种方法,允许将这些更改通知给系统:notifyPath(path,value)和set(path,value),其中path是标识路径的字符串(相对于host元素).
另外还有一个Polycast,其中Rob Dodson非常详细地解释了这些内容.
归档时间: |
|
查看次数: |
391 次 |
最近记录: |