1

在我的页面上,我有一个ng-repeat='item in items'要遍历的$scope.items. $scope.items调用时获取其数据$scope.listItems,它使用 $http 从连接到数据库的 REST API 获取数据。

最初调用$scope.items控制器来初始化 $scope.items 并用数据填充它。

现在,当我添加时,我知道 $http 正在工作,因为更改已反映在数据库中。$scope.items也根据我的控制台日志记录进行更改。但是,页面不会更新以反映更改。

我想我应该使用$scope.$apply(),但我只是得到“错误:$digest 已经在进行中”所以我没有正确使用它。我是 AngularJS 的新手,一般不知道很多 Javascript,所以请忍受我的无知。

这是我的代码。

var app = angular.module('App', []);
app.controller('AppCtrl', function ($scope, $http) {
  $scope.listItems = function () {
    $http({method: 'GET', url: '/api/items'})
      .success(function (data, status, headers, config) {
        $scope.items = data;
        console.log($scope.items);
      })
      .error(function (data, status, headers, config) {
        $scope.items = data || 'Request failed';
        $scope.status = status;
      });
  }
  $scope.addItem = function () {
    $scope.itemDetails.node_type = 'record'; // since input hidden doesnt work
    $http({method: 'POST', url: '/api/items/add', data: $scope.itemDetails, 
           headers: {'Content-Type': 'application/json'}})
      .success(function (data, status, headers, config) {
        $scope.status = status;
        $scope.listItems();
        //$scope.$apply(); // throws an error
      })
      .error(function (data, status, headers, config) {
        $scope.status = status;
      });
  }
  $scope.listItems(); // initialize $scope.items
});
4

0 回答 0