2016-03-11 3 views
0

Может ли кто-нибудь сказать мне, какое наилучшее решение использовать jsonObjects в ng repeat? Мой код выглядит следующим образом:Угловая загрузка данных с сервера json

Мой PHP ответ таков:

die(json_encode(array('sts'=>'success', 'title'=>'*****', 'msg'=>'*******', 'data'=>$result))); 

Мои angular.js службу, как это:

LeadApp.service('LeadsService', function ($http) { 
    var AllLeads = { 
    async: function() { 
     var promise = $http({ 
      url: '../app/ServerData.php', 
      method: "POST", 
      params: { req_id: 'leads' } 
     }).then(function (response) { 
     return response.data; 
     }); 
     return promise; 
    } 
    }; 
    return AllLeads; 
}); 

Тогда в моем контроллере я называю обслуживание и установите ведущий var, который будет использоваться в моем представлении с повторением ng: Мои данные загружаются, и я уже уверен. Я прикрепил рис. Консольного журнала ниже. Но почему-то повторение ng просто не будет работать, как ожидалось ... Что я делаю неправильно? Нет ошибки!

.... 
     LeadsService.async().then(function (d) { 
       this.leads = d.data; 
       console.log(this.leads); 
     this.list_all = this.leads; 

Вот основная нг повтор часть в представлении (выборочные нг повторить с "режем-постраничным"): ...

<div class="widget-content leads_list" ng-controller="leadsController as leads"> 
<tr dir-paginate="lead in leads.list_all | orderBy:sortKey:reverse | filter:search | itemsPerPage:15" pagination-id="leads.list_all"> 
    <td scope="row">{{lead.id}}</td> 

...

+0

Где ваш код ng-repeat? Можете ли вы разместить часть ng-repeat? –

ответ

1

Вы должны связать this контекст вне then метода.

Поскольку вы используете ng-controller="leadsController as leads", было бы разумно связать с переменной leads.

var leads = this; 
LeadsService.async().then(function (d) { 
     leads.list_all = d.data; 
     console.log(leads.list_all); 
}); 

this контекст внутри метода then не то же самое, как this вне контекста метода then. Кроме того, привязка к тому же имени, которое вы используете в своем шаблоне, помогает избежать путаницы.

+0

спасибо, что я полностью пропустил это! –

1

this не контроллер в этом контексте функции обратного вызова. Поэтому вам нужно назначить this переменной в контроллере.

var ctrl = this; 

LeadsService.async().then(function (d) { 
     ctrl.leads = d.data; 
     console.log(ctrl.leads); 
Смежные вопросы