我之前就角度资源问过这个问题而且我得到了它的工作,但现在我已经开始使用restangular。
我有一个从/models
获取数据的视图storage/models.json
,我将其设置为与restangular一起正常工作。
现在我希望有/models/:modelId
这样的视图可以从storage/individual/:modelId.json
获取数据,其中:modelId是模型的相应ID,很明显,我很难用restangular设置它。我使用了角度资源,但是restangular有很多功能,我将来会受益,所以我决定进行切换。
有人能指出我正确的方向吗? GitHub页面并没有真正谈论routeParams,我找不到我正在努力实现的例子,尽管我可能忽略了它。
ModelsCtrl.js:
'use strict';
angular
.module('swoleincApp')
.controller('ModelsCtrl', ['ModelsService', '$scope', ModelsCtrl]);
function ModelsCtrl(ModelsService, $scope) {
ModelsService
.then(function(allModels) {
$scope.models = allModels;
});
}
ModelsService.js:
'use strict';
angular
.module('swoleincApp')
.factory('ModelsService', ['Restangular', ModelsService]);
function ModelsService(Restangular) {
return Restangular
.service('app/storage/models.json')
.getList();
}
以上两个例子可以很好地协同工作,并给我预期的结果。
我正在尝试为第二条路线执行此类操作,但我得到404,因为“:modelId”正在url中使用,而不是实际的模型ID。
IndividualCtrl.js:
'use strict';
angular
.module('swoleincApp')
.controller('IndividualCtrl', ['Individual', '$scope', IndividualCtrl]);
function IndividualCtrl(Individual, $scope) {
Individual
.then(function(individual) {
$scope.model = individual;
});
}
IndividualService.js:
'use strict';
angular
.module('swoleincApp')
.factory('Individual', ['Restangular', IndividualService]);
function IndividualService(Restangular) {
return Restangular
.one('storage/individual/:modelId.json')
.get();
}
答案 0 :(得分:0)
在您的服务更改中
Restangular
.one('storage/individual/:modelId' + '.json')
.get();
到
Restangular
.one('storage/individual/', actualModelId)
.get();
然后,无论您在何处配置模块,都需要添加后缀:
RestangularProvider.setRequestSuffix(".json");
(来自Restangular docs) 如果您的所有请求都需要发送一些后缀才能工作,您可以在此处设置。例如,如果您需要发送/users/123.json这样的格式,可以使用setRequestSuffix方法将.json添加到后缀
答案 1 :(得分:0)
解决了我的问题
改变了这个:
Restangular
.one('storage/individual/:modelId' + '.json')
.get();
对此:
Restangular
.one('storage/individual/', $route.current.params.modelId + '.json')
.get();
并向控制器添加了$ route。