2016-10-19 1 views
0

Чтобы мой код был кратким и модульным, я использую следующий способ обработки HTTP-вызовов.

От контролеров я:

function makeCall(){ 
    Service.getDetails(url, obj).then(responseFn, errorFn); 
} 

В службе я:

this.getDetails = function(url, obj){ 
return $http.get(url); 
} 

Тогда в контроллере у меня есть:

function responseFn(){ 
    //response objct available here by deafult 
} 

function errorFn(){ 
//error objct available here by deafult 

} 

В этих функций я автоматически получить ответ и ошибка объект. В одном случае это нормально, так как мне нужен только ответ GET, но в другом случае я называю тот же метод другим контроллером, и там мне нужно использовать условие для обработки ответа.

Query: Как передать параметр i.e. 'obj' этой функции обратного вызова из моей исходной функции makeCall. Если я передаю две фиктивные переменные функции обратного вызова, это не сработает. (Я ожидал, что первый аргумент будет заменен на ответ и второй аргумент в качестве моего аргумента)

ответ

0

Один из ваших вариантов расширяет ваш возвращаемый объект, в этом случае у вас будет доступ к данным через контроллер.

в службе:

this.getDetails = function(url, obj){ 
    this.myObjData = obj; // bind it to your returing object 
    return $http.get(url); 
} 

в контроллере:

function makeCall(){ 
    Service.getDetails(url, obj).then(responseFn, errorFn); // respond parameter will attach by default, no need to bind it here 
} 

function responseFn(respond){ 
    console.log(respond); // will attach by default 
    console.log(Service.myObjData); // access your data from here 
} 

Надеется, что это поможет вам.