La page utilise ng-repeat pour générer des vues. Modification du modèle ng de ng-repeat dans le contrôleur. Pourquoi la vue n'est-elle pas modifiée ?
$scope.search = function(page){
$scope.orData.page = page==0?1:page;
$scope.$watch("orData", function(){
orderService.searchData($scope.orData).then(function(res){
$scope.res = res.data;
if ($scope.res != undefined) {
if ($scope.res.page_items.length == 0) {
alert("没有订单数据");
}else{
$scope.tds = $scope.res.page_items;
$timeout(function(){
console.log($scope.tds);
}, 1000);
};
}else{
$scope.tds = "";
$("#orPaging").empty();
alert("订单号不能为非数字");
};
});
});
};
//
<tbody>
<tr ng-repeat="td in tds"><!-- -->
<td>{{td.tid}}</td>
<td>{{td.created}}</td>
<td>{{td.buyer_nick}}</td>
<td>{{td.payment}}</td>
<td>{{td.shop_name}}</td>
<td>{{td.title}}</td>
<td>{{td.seller_memo}}</td>
<td>{{td.shipping_type}}</td>
<td>{{td.status}}</td>
<td>{{td.receiver_name}}</td>
<td><button type="button" class="btn btn-primary btn-sm" data-tid="{{td.tid}}" ng-click="detail($event)">查看</button></td>
</tr>
</tbody>
Lorsque $scope.tds est actualisé pour la première fois, la vue a changé. Mais lorsqu'une valeur est à nouveau attribuée à $scope.tds, la vue ne changera plus.
Mais si la longueur de $scope.tds change, la vue changera. Pourquoi ?
Tout d'abord, je veux parler de deux problèmes de nommage dans le code :
"td in td"
Que diable, Angular peut réellement l'exécuter correctement. Il est recommandé de distinguer les deux noms, par exemple, les changer entd in tds
.a
etb
sont en effet nommés ainsi, mais lors de l'écriture de contrôleurs, faut-il toujours penser à ce qu'esta
? Oh, c'est$scope
. Pourquoi ne pas simplement le nommer$scope
.D’accord, sans plus tarder, répondons à vos questions. Au moment de
a.td = []
,a.td
fait référence à un autre tableau, et le tableau d'origine n'a pas changé. Le tableau d'origine est lié au modèle. C'est en effet un écueil d'AngularJS, mais vous feriez mieux d'utiliserpush
,pop
,splice
, etc. pour faire fonctionner les tableaux. Si vous souhaitez remplacer l'ensemble du tableau, il est recommandé. que tu le fasses comme ça :Pour un mécanisme de liaison de données plus détaillé et le processus de mise à jour d'AngularJS, veuillez vous référer à cet article :
http://harttle.github.io/2015/06/06/angular-data-binding-and-digest . ht...
Essayez-le
http://plnkr.co/edit/6tNYE0boiI6CXdKtckpa?p=preview