2015-07-14 2 views
0

У меня есть служба REST, которую я вызываю в своем угловом контроллере через JSONP. Я хочу сохранить возвращенный массив переменной.«эта» переменная не работает при назначении массива JSONP контроллеру AngularJS

Вот что я делаю:

this.testTheRest = function() 
{ 
    $http.jsonp('myRESTService', { 
      params: { 
       callback: 'JSON_CALLBACK', 
       format: 'json' 
      } 
     }) 
      .success(function (data) { 
       this.testlist = data.NoParamsResult; 
       console.log(this.testlist); 
      }) 
      .error(function (data) { 
       alert(data); 
      }); 

     console.log(this.testlist); 
} 

Я определил testlist в качестве переменной в контроллере заранее:

this.testlist = []; 

Обратите внимание на два выходных консоли вызовов. Проблема заключается в том, что первый показывает правильный массив:

Array [ Object, Object ] 

Но второй один показывает пустой массив (вероятно, один из инициализации):

Array [ ] 

Что я должен сделать, чтобы сохранить возвращенные объекты в массиве?

Спасибо заранее,
Frank

+0

ИМХО. Ваша нижняя консоль.log НЕ должна быть такой же, как внутри метода «успеха». Ваш метод успеха называется «назад», когда сервер отвечает данными, что происходит позже. Нижняя консольная инструкция не очень полезна, так как ответ не затуманен - ​​поэтому изменений не должно быть. – gene

+0

Вы правы! Спасибо что подметил это. – Aaginor

+0

Тогда ответ неправильный ...? – gene

ответ

1

Это вопрос обзорное. Попробуйте назначить внешнюю this другой переменной (например, that), затем используя эту переменную вместо this.

var that = this 

that.testTheRest = function() { 
    $http.jsonp('myRESTService', { 
     params: { 
      callback: 'JSON_CALLBACK', 
      format: 'json' 
     } 
    }) 
    .success(function (data) { 
     that.testlist = data.NoParamsResult; 
     console.log(that.testlist); 
    }) 
    .error(function (data) { 
     alert(data); 
    }); 
} 
+0

Точно! Большое спасибо! – Aaginor

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