gpt4 book ai didi

angularjs - AngularFire:如何将部分更新(单个字段)应用于 $firebaseArray 中的项目?

转载 作者:行者123 更新时间:2023-12-04 18:21:04 25 4
gpt4 key购买 nike

我想知道如何对 $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,效果和上面的代码一样。

文档

看看:

希望有帮助!

关于angularjs - AngularFire:如何将部分更新(单个字段)应用于 $firebaseArray 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com