2016-03-15 2 views
3

I отображения таблицы через нг-повторитьУгловая 1,5 не обновляют нг-повтор

 <div ng-app="spApp"> 
<div ng-controller="spListCtrl as MyList"> 
<table width="100%" cellpadding="10" cellspacing="2"> 
    <thead> 

     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Email</th> 
     <th>CellPhone</th> 
     <th>Update</th> 
    </thead> 
     <tbody> 
     <tr ng-repeat="item in MyList.Contacts track by $index"> 

      <td class="align-center"><input type="text" ng-model="MyList.Contacts[$index].FirstName"> </input></td> 
      <td class="align-center">{{MyList.Contacts[$index].Title}}</td> 
      <td class="align-center">{{MyList.Contacts[$index].Email}}</td> 
      <td class="align-center">{{MyList.Contacts[$index].CellPhone}}</td> 
      <td class="align-center"><button ng-click="ShowNewForm(MyList.Contacts[$index])">Изменить</button></td> 
     </tr> 
    </tbody> 
</table> 

Загрузка через службу на Аякса данных

spApp.controller('spListCtrl', function spListCtrl($scope,dataService){ 

var Contacts; 
var promiseObj=dataService.getContacts(); 
promiseObj.then(function(value) { 

Contacts=value; 
}); 

Я проверить в отладке, и данные присваиваются нормальным, но не отображаемым. Что не пробовал, расскажи мне, что я делаю неправильно.

ответ

1

controllerAs при использовании шаблона, сделать привязку данных связывания переменных в this (контекст функции контроллера), чтобы вы могли получить доступ к ним на HTML, используя его псевдоним MyList (который является экземпляром функции контроллера).

Код

spApp.controller('spListCtrl', function spListCtrl(dataService){ 
    var self = this 
    var promiseObj=dataService.getContacts(); 
    promiseObj.then(function(value) { 
     self.Contacts=value.data; 
    }); 
}); 

А внутри ng-repeat использования item иметь обязательную работу.

<tr ng-repeat="item in MyList.Contacts track by $index"> 

     <td class="align-center"><input type="text" ng-model="item.FirstName"> </input></td> 
     <td class="align-center">{{item.Title}}</td> 
     <td class="align-center">{{item.Email}}</td> 
     <td class="align-center">{{item.CellPhone}}</td> 
     <td class="align-center"><button ng-click="ShowNewForm(item)">Изменить</button></td> 
    </tr> 
+1

Кроме того, мы можем использовать {{item.Title}} вместо MyList.Contacts [$ index] .Title. Разве мы не можем? То же самое касается и других свойств. –

+0

@NagaSandeep правильно .. Я пропустил это .. Спасибо за хед-ап .. –

+0

Не нужно вводить '$ scope' при использовании синтаксиса controllerAs. Также вам нужно получить доступ к свойству '.data' результата из обещания. например 'self.Contacts = value.data; '. – Lex

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