由于客户需要支持IE8,我最近将我的角度应用从 1.3 降级为 1.2 。
我的工厂资源功能正在 1.3 中工作,但现在返回的 JSON 响应中未显示$values
数组。
以下是工厂功能的样子:
offersController.factory('Offer241GetAll', function ($resource, config) {
return $resource(config.apiUrl + '/TwoForOne/GetAll');
});
调用方法的控制器:
offersController.controller('offers241Controller', function ($scope, Offer241GetAll) {
Offer241GetAll.get(function (data) {
$scope.offers = data.$values;
});
});
data.$values
应包含一个数组,但data
只包含:
$promise: Object
$resolved: true
奇怪的是,此$http.get()
方法有效,我已确认API正在发送值:
$http.get(config.apiUrl + '/TwoForOne/GetAll').then(function(r){
$scope.offers = r.data.$values;
});
如何在版本 1.3 中继续使用我之前的资源功能?
在角度的不同版本中它是如何工作的有什么不同吗?
答案 0 :(得分:0)
$ http和$ resource方法的工作方式不同。
$ http get方法返回一个promise。
$ resource方法Offer241GetAll.get返回一个具有promise和promise状态的对象。 你可以尝试这样的事情:
offersController.controller('offers241Controller', function ($scope, Offer241GetAll) {
Offer241GetAll.get().$promise.then(function (data) {
$scope.offers = data;
});
});
有关此内容的更多信息,您可find here