AngularFire:如何将部分更新(单个字段)应用于 $firebaseArray 中的项目?
AngularFire: How to apply partial update (a single field) to an item in $firebaseArray?
我想知道如何对 $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
我已经看到 other discussions 如何使用 $asObject
执行此操作,但我仍然对如何处理 $firebaseArray
中的项目感到困惑
我想我可以帮上忙。首先,一些事情:
- 我假设您的
getItem()
没有使用 .$getRecord()
,因此 someItem
没有 $id
属性。因此,someItem
的属性被设置为 $scope.items
. 的属性
- 如果你想创建一个新项目,你可以
.$add(someItem)
到itemsArray
。
- 如果
someItem
有一个 $id
,您可以使用 $scope.items.$save(someItem)
。
代码
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 example
- 我在PLNKR中创建了ItemsFactory,实现了和上面代码一样的结果。
文档
看看:
希望对您有所帮助!
我想知道如何对 $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
我已经看到 other discussions 如何使用 $asObject
执行此操作,但我仍然对如何处理 $firebaseArray
我想我可以帮上忙。首先,一些事情:
- 我假设您的
getItem()
没有使用.$getRecord()
,因此someItem
没有$id
属性。因此,someItem
的属性被设置为$scope.items
. 的属性
- 如果你想创建一个新项目,你可以
.$add(someItem)
到itemsArray
。 - 如果
someItem
有一个$id
,您可以使用$scope.items.$save(someItem)
。
代码
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 example
- 我在PLNKR中创建了ItemsFactory,实现了和上面代码一样的结果。
文档
看看:
希望对您有所帮助!