2015-10-11 28 views
1

我之前问过这个问题的角度资源和我得到它的工作,但现在我已经开始使用restangular。

我有一个从storage/models.json获取数据的视图/models,并且我将它设置为与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

在服务改变

Restangular 
     .one('storage/individual/:modelId' + '.json') 
     .get(); 

Restangular 
     .one('storage/individual/', actualModelId) 
     .get(); 

那么无论你是对模块的配置,你需要添加后缀:

RestangularProvider.setRequestSuffix(".json"); 

(从Restangular文档) 如果所有请求都需要发送一些后缀的工作,你可以将它设置这里。例如,如果你需要送样/users/123.json可以使用setRequestSuffix方法以.json添加后缀格式

+0

我试过这个,只是得到错误。要么我错误地实施,要么你误会。例如,/ models视图加载所有模型。每个模型都链接到/ models /:modelId,其中:modelId是导向其.json文件的字符串。我希望它能够在单击该链接时/ models /:modelId视图中加载用于数据的storage/individual /:modelId.json文件。我使用routeParams很容易使用角度资源设置,但无法找到用于重新生成的示例。 – Lansana

0

解决我的问题

改变了这个:

Restangular 
     .one('storage/individual/:modelId' + '.json') 
     .get(); 

对此:

Restangular 
     .one('storage/individual/', $route.current.params.modelId + '.json') 
     .get(); 

并添加$路线到控制器。

相关问题