作者:郁小草__ | 来源:互联网 | 2023-05-17 18:34
我想知道如何对项目应用部分更新$firebaseArray
,文档很混乱,没有提到这一点..$save
似乎破坏了整个项目:
var ref = new Firebase("https://xxxx.firebaseio.com/items");
$scope.items = $firebaseArray(ref);
someItem = getItem();
someItem.newField= 'Test';
$scope.items.$save(someItem);
这会导致整个项目对象被完全覆盖,而不仅仅是更新 newField
我已经看过其他关于如何使用这个问题的讨论,$asObject
但是我仍然很困惑如何处理这个问题$firebaseArray
1> Sinan Bolel..:
我想我可以在这里帮忙.首先,一些事情:
我假设你getItem()
不使用.$getRecord()
,因此someItem
没有$id
财产.所以,someItem
get的属性设置为属性$scope.items
.
您可以.$add(someItem)
到itemsArray
,如果你想创建一个新的项目.
你可以使用$scope.items.$save(someItem)
if someItem
有一个$id
.
码
var ref = new Firebase(fbUrl+'/items');
itemsList = $firebaseArray(ref);
$scope.items = itemsList;
$scope.addItemObject = function() {
var someItem = {};
someItem.newField = 'test';
itemsList.$add(someItem);
console.log('$scope.items is',$scope.items);
}
$scope.updateItem = function() {
console.log('$scope.items was',$scope.items);
var id = prompt("Enter $id to update");
var someItem = itemsList.$getRecord(id);
var newField = prompt('Enter new value for newField');
someItem.newField = newField;
itemsList.$save(someItem).then(function(ref) {
console.log('$scope.items is now',$scope.items);
});;
}
例
请参阅此工作PLNKR示例
我在PLNKR中创建了ItemsFactory,它实现了与上面代码相同的结果.
文档
看一眼:
$firebaseArray $add()
$firebaseArray $save()
$firebaseArray $getRecord()
希望有所帮助!