2015-06-28 2 views
1

Я создаю приложение AngularJS, поддерживаемое сторонним API. У меня есть основной ресурс, как это:AngularJS - инициализировать объект ngResource, если ответ API равен нулю

module.factory('UserPreference', function($resource) { 
    return $resource('/users/:user_id/preferences/:preference_type_id', { 
    user_id: "@user_id", 
    preference_type_id: "@preference_type_id" 
    }) 
}) 

Если пользователь не указал предпочтение определенного типа предпочтений, результат будет нулевым. Я хочу инициализировать объект в случае, когда ответ равен null.

{user_id: 1, preference_type_id: 1, preference: null} 

Я вижу два варианта:

  1. ли это в transformResponse в пределах завода
  2. Ручки в контроллере

1 кажется, как очиститель варианта, так как это действительно проблема с данными больше, чем проблема с контроллером, но я не могу понять, как это сделать. В частности, я не могу получить доступ к параметрам user_id и: preference_type_id, которые передаются ресурсу.

Должен ли я просто обращаться с этим в контроллере? Есть ли что-то действительно очевидное, что я пропал?

ответ

0

Заверните на функцию, которую можно назвать, как столько раз, сколько вам нравится.

module.factory('UserPreference', function($resource, $q) { 
    var resouce = $resource('/users/:user_id/preferences/:preference_type_id', { 
    user_id: "@user_id", 
    preference_type_id: "@preference_type_id" 
    }); 
    return function (userId, preferenceTypeId) { 
    var promise = $q.defer(); 
    var defaultPreference = {user_id: 1, preference_type_id: 1, preference: null}; 
    $q.when(resouce.get({user_id: userId, preference_type: preferenceTypeId})) 
    .then(function (userPreferences) { 
     promise.resolve(userPreference || defaultPreference); 
    }, function() {promise.reject('error')}); 

    return promise.promise; 
    }; 
}); 
0

Может лет сделать что-то подобное,

module.factory('UserPreference', function($resource, $location) { 

if($location.search().preference_type_id){ 
    return $resource('/users/:user_id/preferences/:preference_type_id', { 
    user_id: "@user_id", 
    preference_type_id: "@preference_type_id" 
    }) 
} 

else{ 
     //do your initialization and return 
     } 


}) 

 Смежные вопросы

  • Нет связанных вопросов^_^