Dau*_*eDK 2 firebase angularfire2
根据angularfire2文档,当您不想更新列表中的项目时,可以执行以下操作:
const items = af.database.list('/items');
// to get a key, check the Example app below
items.update('key-of-some-data', { size: newSize });
Run Code Online (Sandbox Code Playgroud)
但是可以更新列表中的项目,而不必像这样指定对象的键值:
items.update('key-of-some-data', item);
Run Code Online (Sandbox Code Playgroud)
在angularfire中,可以这样做:
<li ng-repeat="item in list">
<input type="text" ng-model="item.title" ng-change="list.$save(item)" />
</li>
Run Code Online (Sandbox Code Playgroud)
感谢您抽出宝贵时间阅读这个问题:)
实现update看起来像这样:
update(item: FirebaseOperation, value: Object): firebase.Promise<void> {
return this._checkOperationCases(item, {
stringCase: () => this.$ref.ref.child(<string>item).update(value),
firebaseCase: () => (<firebase.database.Reference>item).update(value),
snapshotCase: () => (<firebase.database.DataSnapshot>item).ref.update(value),
unwrappedSnapshotCase: () => this.$ref.ref.child((<AFUnwrappedDataSnapshot>item).$key).update(value)
});
}
Run Code Online (Sandbox Code Playgroud)
因此可以update通过以下方式进行呼叫:
使用string键和值:
const items = af.database.list('/items');
items.update('key-of-some-data', { size: newSize });
Run Code Online (Sandbox Code Playgroud)使用Firebase ref和值:
const items = af.database.list('/items');
const ref = items.$ref.ref;
items.update(ref.child('key-of-some-data'), { size: newSize });
Run Code Online (Sandbox Code Playgroud)使用Firebase快照和值:
const items = af.database.list('/items', { preserveSnapshot: true });
items.subscribe(list => {
const snapshot = list[0];
items.update(snapshot, { size: newSize });
});
Run Code Online (Sandbox Code Playgroud)使用未包装的列表项和值:
const items = af.database.list('/items');
items.subscribe(list => {
const item = list[0];
items.update(item, { size: newSize });
});
Run Code Online (Sandbox Code Playgroud)(该调用上方的片段subscribe仅用于说明快照和未包装的项目是list可观察的发射值.使用subscribe这样的方式执行更新是没有意义的.)
AngularFire2目前正在进行一些重构和重新安排,以准备候选版本.如果您有一个上述选项都不合适的用例,现在是时候发言了.讨论就在这里.但是,对于特定的内容,您应该创建一个新问题.
| 归档时间: |
|
| 查看次数: |
4153 次 |
| 最近记录: |