在没有页面刷新的情况下更新ui-grid中的单元数据

时间:2015-08-28 15:57:04

标签: angularjs angular-ui-grid

我有一张用ui-grid制作的表格。该表显示有关新闻故事列表的信息。在最后一栏中,我让用户能够编辑,删除和/或制作新闻报道。

一切似乎都能正常工作 - 我可以弹出模态,输入所需信息后,我可以在服务器上看到我的数据更改。如果我刷新页面,我也可以在桌面上看到我的数据更改。但是,我希望在没有页面刷新的情况下更改单元格数据。它似乎与我的新闻数据无关。

这是ui-grid:

$scope.news = getAdminNews.results;


    /**
     * ui-grid implementation
     */
    $scope.gridOptions = {
      data: 'news',
      enableColumnResizing: true,
      enableFiltering: true,
      enableGridMenu: false,
      enableColumnMenus: false,
      paginationPageSizes: [25,50,75],
      paginationPageSize: 25,
      rowHeight: 75
    };

    $scope.gridOptions.columnDefs = [{
        displayName: 'Title',
        field: 'title.rendered',
        filterCellFiltered: true,
        sortCellFiltered: true,
        width: '20%'
      }, {
        displayName: 'Body',
        field: 'body',
        width: '20%'
      }, {
        displayName: 'Created',
        field: 'created',
        type: 'date',
        cellFilter: 'date:"yyyy-MM-dd"',
        filterCellFiltered: true,
        sortCellFiltered: true,
        width: '20%',
        sort: {
          priority: 0
        }
      },
      {
        displayName: 'Actions',
        displayName: 'Actions',
        width: '20%',
        enableSorting: false,
        enableFiltering: false,
        field: 'actions',
        cellTemplate: 'table-cell-actions'
      }
    ];

    $scope.gridOptions.onRegisterApi = function(gridApi) {
      $scope.gridApi = gridApi;
    };

我控制器的一部分成功运作:

    $scope.newPost = function() {
      ngDialog.openConfirm({
        template: 'modalPostNew',
        className: 'ngdialog-theme-default',
        scope: $scope
        }).then(function() {
          var newPost = {
            "id": 0,
            "title": $scope.newPostForm.title
          }
          AdminNews.save(newPost);
          toaster.pop('success', 'Updated', 'News item updated successfully.');
      });
    }

1 个答案:

答案 0 :(得分:0)

我需要更新ui-grid填充表格的$ scope.news数据。这是我的控制器现在的样子:

 $scope.newPost = function() {
      ngDialog.openConfirm({
        template: 'modalPostNew',
        className: 'ngdialog-theme-default',
        scope: $scope
        }).then(function() {
          var newPost = {
            "id": 0,
            "title": $scope.newPostForm.title
          }
          AdminNews.save(newPost).$promise.then(function(response) {
            var myObj = {
              "id": response.data.id,
              "title": {
                "rendered": response.data.title
              }
            }
            $scope.news.push(myObj);
          });
          toaster.pop('success', 'Updated', 'News item updated successfully.');
      });
    }