替换$ firebaseArray中的项目

时间:2015-01-24 14:16:56

标签: angularjs firebase angularfire

我正在试图弄清楚如何更新firebase数组中的项目。我像这样显示数组:

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

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

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

当我从模态窗口返回时,我认为我可以做这样的事情:     $ scope.clients。$保存(newClient)

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

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

1 个答案:

答案 0 :(得分:1)

改编加藤的评论

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

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

$scope.items.$save(original_object)