Angularjs 在angular js中处理来自$resource的数据响应
我有一个带有Angularjs 在angular js中处理来自$resource的数据响应,angularjs,laravel,laravel-4,angularjs-scope,angular-resource,Angularjs,Laravel,Laravel 4,Angularjs Scope,Angular Resource,我有一个带有laravel4和angularjs的RESTful应用程序 在我的Laravel控制器中 public function index() { $careers = Career::paginate( $limit = 10 ); return Response::json(array( 'status' => 'success', 'message' => 'Careers successfully loaded!', 'caree
laravel4
和angularjs
的RESTful
应用程序
在我的Laravel控制器中
public function index() {
$careers = Career::paginate( $limit = 10 );
return Response::json(array(
'status' => 'success',
'message' => 'Careers successfully loaded!',
'careers' => $careers->toArray()),
200
);
}
还有有棱角的脚本
var app = angular.module('myApp', ['ngResource']);
app.factory('Data', function(){
return {
root_path: "<?php echo Request::root(); ?>/"
};
});
app.factory( 'Career', [ '$resource', 'Data', function( $resource, Data ) {
return $resource( Data.root_path + 'api/v1/careers/:id', { id: '@id'});
}]);
function CareerCtrl($scope, $http, Data, Career) {
$scope.init = function () {
$scope.careers = Career.query();
};
}
在控制台中使用$resource查看我的请求
请参阅:.$resource
$scope.init = function () {
var success = function(careerList, getResponseHeaders){
$scope.careers = careerList;
};
var failure = function(data){
// TODO
};
Career.query(success, failure);
};
由于这种怪癖和其他烦恼,我建议使用默认的$resource来代替它。它让生活变得更轻松试试以下方法:
app.factory( 'Career', [ '$resource', 'Data', function( $resource, Data ) {
return $resource( Data.root_path + 'api/v1/careers/:id', { id: '@id'}, {
query: {
isArray: false,
method: 'GET'
}
});
}]);
Career.query(function(res) {
$scope.careers = res.careers.data;
}, function(error) {
// Error handler code
});
我的第一个问题是,为什么我在$scope.careers中得到空数组[]?这不是失败。请看屏幕截图,我得到的是所有值,如何将其映射到scope变量?您是通过$resource调用还是通过$http调用得到该屏幕截图?还可以尝试编辑的新代码。您可以在回调中获取数据,该数据可能会在查询函数返回后运行。屏幕截图来自$resource,使用您的代码,我也得到了相同的和
$scope.careers
asundefined
same在这里挣扎了几个小时
app.factory( 'Career', [ '$resource', 'Data', function( $resource, Data ) {
return $resource( Data.root_path + 'api/v1/careers/:id', { id: '@id'}, {
query: {
isArray: false,
method: 'GET'
}
});
}]);
Career.query(function(res) {
$scope.careers = res.careers.data;
}, function(error) {
// Error handler code
});