如果您为您的请求定义了一个服务,这会更容易(并且更有角度)。沿着这些思路:
angular.module('hellServices', ['ngResource'])
.factory('Hell', function ($resource) {
return $resource('URL/TO/HELL', {}, {
query: { method: 'GET' }
});
});
确保将其包含在您的应用程序中:
var app = angular.module('myApp', ['ngGrid', 'hellServices']);
然后你可以在你的控制器中得到它的承诺:
app.controller('MyCtrl', function($scope, $http, Hell) {
$scope.myData = Hell.query();
然后设置网格选项以查看其数据的承诺(就像您已经做的那样):
$scope.gridOptions = {
data: 'myData',
showGroupPanel: true
};
如果你这样做,你不必担心 $scope.$apply 因为它会为你处理。这更干净且更容易遵循。如果您仍然需要回调来修改从服务器返回的数据,请将函数传递给query()
您的服务功能:
...
$scope.myData = Hell.query(function(hell) {
// code that modifies 'hell'
});
查看官方文档 https://docs.angularjs.org/guide/services关于 Angular 服务。基础知识也包含在Step #11 http://docs.angularjs.org/tutorial/step_11Angular JS 官方教程。