Angular 1.5无法更新ng-repeat。

3
我通过使用 ng-repeat 来展示一个表格。
     <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>

通过ajax数据在服务上加载

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

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

Contacts=value; 
 });

我检查了调试,数据被分配正常,但没有显示出来。如果有什么问题,请告诉我我做错了什么。

1个回答

1

当使用controllerAs模式时,将数据绑定变量绑定到this(控制器函数上下文),以便您可以使用其别名MyList(控制器函数的实例)在HTML上访问它们。

代码

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。不是吗?其他属性也是一样的。 - Naga Sandeep
使用controllerAs语法时,无需注入$scope。此外,您需要访问承诺结果的.data属性。例如:self.Contacts = value.data; - Lex
谢谢!一切都正常工作。 在相同值的情况下需要"MyList.Contacts[$index].FirstName"。 - Alexey Kleandrov
@Lex 正确,谢谢提醒。实际上我在赶着吃晚饭,所以才会匆忙错过这样的东西。 - Pankaj Parkar
@Alexey,你应该在那里使用item,不需要使用$index访问对象。 - Pankaj Parkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接