替换 $firebaseArray 中的项目

Replace an item in a $firebaseArray

我想知道如何更新 firebase 数组中的项目。我这样显示数组:

tr(ng-repeat="client in clients")
    td
        button(ng-click="addClient(client)")

问题是我的 addClient(client) 方法实际上打开了一个模态 window 允许用户进行修改。通常我在这种情况下所做的是克隆传递给模态 window 的 client 对象,以便在用户关闭模态 window 之前不会修改原始对象,如下所示:

app.controller('modalEditClient', ($scope, $modalInstance, client) ->
    $scope.client = angular.clone(client) 

当我从模态 window return 时,我认为我可以做这样的事情: $scope.clients.$save(newClient)

但这失败了,因为 newClient 实际上是原始客户端的克隆版本。

我的问题是:最好的方法是什么?我应该只删除原始客户端并只删除 $add(newClient) 吗?或者有没有办法用新对象的数据更新原始对象的数据?

改编自 Kato 的评论

因为我在模态 window 中克隆一个对象,$firebaseArray 不知道它。因此,当我修改克隆并需要写回原始 firebase 对象时,我必须将更改应用回原始对象。

angular.extend(original_object, new_object) 解决了这个问题。然后我可以像往常一样使用 $firebaseArray 将数据保存回 firebase:

$scope.items.$save(original_object)