javascript - 通过模态实例更新字段后,Angular 刷新数组

标签 javascript arrays angularjs

要编辑对象详细信息,我使用 ui bootstrap 模式指令。我使用相同的 Controller 添加新实体或编辑现有实体。使用我当前的代码,当我添加新对象时,它会被推送到数组中。现在我在更新现有对象时遇到问题。我当前的代码还将更新的对象推送到数组,但不推送到数据库,并显示数组中旧记录和新记录的重复项。刷新后,旧的当然会消失,因为 Controller 再次查询实际的数组。

$scope.openSaleDlg = function (saleId) {
    var modalInstance = $modal.open({
        backdrop: 'static',
        templateUrl: '/sales/detail.html',
        controller: 'SaleDetailCtrl',
        scope: $scope,
        resolve: {
            saleId: function () {
                return saleId;
            }
        }
    });

modalInstance.result.then(
    function (sale) {
        $scope.sales.push(sale)
    }
);

};

我可以在成功时执行 .then $scope.sales = Sale.query(); ,但也许有更好的方法来通过不查询数据库来更新列表中的对象又来了?

enter image description here

最佳答案

您可以按照您的建议进行操作,并更新列表中的对象(如果存在),而不是推送它。 Angular 将接受更改并重新渲染。

类似于:

modalInstance.result.then(function (sale) {
  var saleToUpdate = $scope.sales.find(function (existingSale) {
    return existingSale.id == sale.id;
  });

  if (saleToUpdate) {
    angular.extend(saleToUpdate, sale);
  } else {
    $scope.sales.push(sale);
  }
});

请注意,Array#find 需要一个polyfill(或者您可以使用不同的方法来搜索数组)。

关于javascript - 通过模态实例更新字段后,Angular 刷新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24596316/

相关文章:

javascript - Django Rest Framework 按顺序返回序列化数据

javascript - 使元素在可滚动的 div 中居中

javascript - 验证是否选中 1 到 3 个复选框但具有不同的 id

javascript - 如何从 Javascript FileReader 获取文件名?

javascript - AngularJS 如何动态添加组件?

javascript - 递归函数不返回所有数据

python - 在 numpy 数组的交替行和列中插入值

PHP 获取第一个数组元素

angularjs - Ionic + AngularJs + 基于 token 的身份验证

javascript - 如何将图像保存在特定文件夹 s3 下?