【问题标题】:ag-grid binding from service in external file来自外部文件中服务的 ag-grid 绑定
【发布时间】:2016-03-25 15:18:04
【问题描述】:

我是 Angular 新手,但我正在尝试使用 ag-grid。我目前在一个文件中有一个服务,在另一个文件中有一个控制器。我能够看到网格列标题,但无法从我的服务中获取数据以绑定到网格。谁能让我知道我做错了什么。

我尝试过使用

gridOptions.datasource = myDataSource; -- 来自 ag-grid 的网站无法让它工作。

rmdsServices.js

(function () {
'use strict';
var rmdsServices = angular.module('rmdsServices', ['ngResource']);

rmdsServices.factory('rmds', ['$resource',
  function ($resource) {
      return $resource('/api/rmd/', {}, {
          query: { method: 'GET', params: {}, isArray: true }
      });
  }]);

})();

rmdsController.js

(function () {
angular
.module('rmdsApp', ['agGrid', 'rmdsServices'])
.controller('rmdsController', rmdsController)


rmdsController.$inject = ['$scope', 'rmds'];
function rmdsController($scope, rmds) {
    $scope._rmd = rmds.query();


    var columnDefs = [
        { headerName: "RMDID", field: "RMDID", width: 150, editable: true },
        //other columns defs

    ];


    var rowData = $scope._rmd;


    $scope.gridOptions = {
        columnDefs: columnDefs,
        enableFilter: true,
        angularCompileFilters: true,
        enableSorting: true,
        rowSelection: 'single',
        enableColResize: true,
        rowData : rowData,
        angularCompileRows: true
    };
};

})();

我添加了以下内容,我可以看到对象返回,但它们仍然没有绑定到网格。当我发出警报时,我可以看到对象返回但未绑定到网格。抱歉,我对 Angular 有点陌生。

更新:

        var rowdata = $scope._rmd;
    rmds.query().$promise.then(function (res) {
        $scope._rmd = res;            
    });

    $scope.gridOptions = {
        columnDefs: columnDefs,
        //enableFilter: true,
        //angularCompileFilters: true,
        //enableSorting: true,
        //rowSelection: 'single',
        //enableColResize: true,
        rowData: $scope._rmd
       // angularCompileRows: true
    };

【问题讨论】:

    标签: javascript angularjs angularjs-scope ag-grid


    【解决方案1】:

    目前您正在为网格数据设置未定义的值。相反,您应该从服务调用的成功调用中设置 $scope._rmd。

    代码

    rmds.query().$promise.then(function (res){
        $scope._rmd = res;
    });
    
    //directly assign scope variable which update the table onve it will have value
    $scope.gridOptions = {
        columnDefs: columnDefs,
        enableFilter: true,
        angularCompileFilters: true,
        enableSorting: true,
        rowSelection: 'single',
        enableColResize: true,
        rowData : $scope._rmd,
        angularCompileRows: true
    };
    

    【讨论】:

    • 谢谢,不知道为什么我之前没有看到这个。
    • 很高兴为您提供帮助..谢谢:)
    【解决方案2】:

    网格初始化后需要调用gridOptions.api.setRowData()更新数据。

    rmds.query().$promise.then(function (res){
        $scope.gridOptions.api.setRowData(res);
    });
    

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2020-03-29
      • 2016-05-07
      • 2019-04-14
      • 2020-06-12
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2017-01-28
      相关资源
      最近更新 更多