1

我在模态窗口中有一个表单,可以将数据添加到数据库中。成功添加后,我调用 $route.reload() 函数来刷新底层页面,但是,我的模态窗口仍然显示。

$scope.add = function() {
      $http.post('/api/contact', $scope.form).
        success(function(data) {
          $scope.showModal = false;
          $route.reload();
        });
    };

模态是标准的 angularjs-ui 模态:

<div modal="showModal" close="close()" options="opts"> etc </div>

我试图$scope.showModal = false;在控制器的开头添加,但这也无济于事。

这是plnkr中的代码:

http://plnkr.co/edit/xz6gJRTBisVCeM0gNLx6?p=preview

请注意,我知道,如果您注释掉该$route.reload()选项,列表中的项目会得到更新,但是在我的应用程序中,我正在将内容写入数据库,因此我需要 $route.reload 因为我需要重新查询数据库.

4

1 回答 1

2

在应用 $route.reload() 之前您需要超时,因为它试图在浏览器有时间更新视图之前触发。这有效:http ://plnkr.co/edit/E7oraQ?p=preview

此外,除非您正在处理非角度的东西,否则没有任何理由重新加载只是为了写入数据库。您应该能够在控制器内重新查询。

于 2013-07-18T13:42:12.530 回答