Angular / Restangular,如何使用angular-resource

时间:2015-10-11 02:54:52

标签: angularjs restangular

我之前就角度资源问过这个问题而且我得到了它的工作,但现在我已经开始使用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();
}

2 个答案:

答案 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。