ag-grid 从外部文件中的服务绑定
ag-grid binding from service in external file
我是 angular 的新手,但我正在尝试使用 ag-grid。我目前在一个文件中有一个服务,在另一个文件中有一个控制器。我可以看到网格列 headers,但无法从我的服务中获取数据以绑定到网格。谁能告诉我我做错了什么。
我试过使用
gridOptions.datasource = 我的数据源; -- 来自 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
};
};
})();
我添加了以下内容,我可以看到 objects 返回,但它们仍然没有绑定到网格。当我进入警报时,我可以看到 objects 回来但没有绑定到网格。抱歉,我对 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
};
目前您正在为网格数据设置未定义的值。相反,您应该从服务调用的成功调用中设置 $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
};
网格初始化后需要调用gridOptions.api.setRowData()更新数据
rmds.query().$promise.then(function (res){
$scope.gridOptions.api.setRowData(res);
});
我是 angular 的新手,但我正在尝试使用 ag-grid。我目前在一个文件中有一个服务,在另一个文件中有一个控制器。我可以看到网格列 headers,但无法从我的服务中获取数据以绑定到网格。谁能告诉我我做错了什么。
我试过使用
gridOptions.datasource = 我的数据源; -- 来自 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
};
};
})();
我添加了以下内容,我可以看到 objects 返回,但它们仍然没有绑定到网格。当我进入警报时,我可以看到 objects 回来但没有绑定到网格。抱歉,我对 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
};
目前您正在为网格数据设置未定义的值。相反,您应该从服务调用的成功调用中设置 $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
};
网格初始化后需要调用gridOptions.api.setRowData()更新数据
rmds.query().$promise.then(function (res){
$scope.gridOptions.api.setRowData(res);
});