gpt4 book ai didi

javascript - 将 Ajax 数据获取到 Angular 网格中

转载 作者:行者123 更新时间:2023-12-03 03:45:19 24 4
gpt4 key购买 nike

使用 Angular Grid,我在 console.log 中获取 ajax 获取数据。但是一个空的网格。

控制台日志显示:

[13:56:11.411] now!!
[13:56:11.412] []
[13:56:11.412] now!!
[13:56:11.556] <there is data returned from console.log(getData); >

这是js文件。

// main.js
var app = angular.module('myApp', ['ngGrid']);

var getData = [];

function fetchData() {
var mydata = [];

$.ajax({
url:'/url/to/hell',
type:'GET',
success: function(data) {

for(i = 0, j = data.length; i < j; i++) {
mydata[i] = data[i];
}
getData = mydata;
console.log(getData);
}
});
}
fetchData();


app.controller('MyCtrl', function($scope) {

console.log('now!!')
console.log(getData)
console.log('now!!')

$scope.myData = getData


$scope.gridOptions = {
data: 'myData',
showGroupPanel: true
};
});

新建Js文件:

//main.js

var app = angular.module('myApp', ['ngGrid']);

app.controller('MyCtrl', function($scope, $http) {
function fetchData() {
$http({
url:'/url/to/hell',
type:'GET'})
.success(function(data) {
$scope.myData = data;
$scope.gridOptions = {
data: 'myData',
showGroupPanel: true
};
});
}
fetchData();
});

HTML 文件。

<html ng-app="myApp">
<head lang="en">
<meta charset="utf-8">
<title>Blank Title 3</title>
<link rel="stylesheet" type="text/css" href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" />
<link rel="stylesheet" type="text/css" href="../static/css/style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>
<script type="text/javascript" src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script>
<script type="text/javascript" src="../static/js/main.js"></script>
</head>

<body ng-controller="MyCtrl">

<div class="gridStyle" ng-grid="gridOptions"></div>
</body>
</html>

最佳答案

如果您为您的请求定义了一个服务,这会更容易(并且更有 Angular )。大致如下:

angular.module('hellServices', ['ngResource'])
.factory('Hell', function ($resource) {
return $resource('URL/TO/HELL', {}, {
query: { method: 'GET' }
});
});

确保将其包含在您的应用中:

var app = angular.module('myApp', ['ngGrid', 'hellServices']);

然后你可以在你的 Controller 中得到它的 promise :

app.controller('MyCtrl', function($scope, $http, Hell) {  
$scope.myData = Hell.query();

然后设置网格选项以查看其数据的 promise (就像您已经做的那样):

$scope.gridOptions = { 
data: 'myData',
showGroupPanel: true
};

如果您这样做,您不必担心 $scope.$apply,因为它会为您处理。这更干净且更容易遵循。如果您仍然需要回调来修改从服务器返回的数据,请将函数传递给服务的 query() 函数:

...
$scope.myData = Hell.query(function(hell) {
// code that modifies 'hell'
});

查看 official docs关于 Angular 服务。 Step #11 中也介绍了基础知识。 Angular JS 官方教程。

关于javascript - 将 Ajax 数据获取到 Angular 网格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com