2015-10-11 2 views
1

Я задал этот вопрос раньше для угловых ресурсов, и я получил его работу, но теперь я перешел к использованию 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-адресе в отличие от фактического идентификатора модели.

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 Docs) Если все ваши запросы требуют, чтобы послать некоторый суффикс для работы, вы можете установить его Вот. Например, если вам нужно отправить формат как /users/123.json вы можете добавить, что .json суффиксу с использованием метода setRequestSuffix

+0

Я пробовал это и просто получаю ошибки. Либо я внедряю неправильно, либо неправильно понимаю. Например,/models view загружает все модели. Каждая модель имеет ссылку на/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(); 

И добавил $ маршрут к контроллеру.