页面使用了ng-repeat生成了view。在controller里修改了ng-repeat的ng-model。view没有修改是什么么?
$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>
第一次刷新$scope.tds,view是有改变的。但是再次给$scope.tds赋值,view就不再改变了。
但是如果$scope.tds的长度有变,view又会变了,这是为什么呢?
우선, 코드에서 두 가지 이름 지정 문제에 대해 이야기하고 싶습니다.
"td in td"
대체 Angular는 실제로 이를 올바르게 실행할 수 있습니다. 두 이름을 구별하는 것이 좋습니다. 예를 들어td in tds
로 변경합니다."td in td"
是什么鬼,Angular居然也可以正确地执行。建议区别这两个名称,比如改成td in tds
。a
和b
这样命名确实可以,不过写控制器时是不是经常要想一想a
是什么?哦,是$scope
。为何不直接命名为$scope
。好了不啰嗦了,回答你的问题。在
알겠습니다. 더 이상 고민하지 말고 질문에 답해 보겠습니다.a.td = []
的时候,a.td
引用了另外一个数组,原有数组并未改变。而模板中绑定的是原有数组。这确实是AngularJS的一个坑,但你最好用push
、pop
、splice
이렇게a
와b
의 이름을 지정하는 것은 괜찮지만 컨트롤러를 작성할 때 항상a
가 무엇인지 생각해야 합니까? 아,$scope
군요. 그냥$scope
로 이름을 지정하면 어떨까요?a.td = []
인 경우a.td
는 다른 배열을 참조하고 원래 배열은 변경되지 않습니다. 원본 배열은 템플릿에 바인딩됩니다.이것은 실제로 AngularJS의 함정
으아악 🎜AngularJS의 더 자세한 데이터 바인딩 메커니즘과 업데이트 프로세스는 다음 문서를 참조하세요: 🎜http://harttle.github.io/2015/06/06/angular-data-bound-and-digest.ht.. . 🎜이지만 배열을 작동하려면
push
,pop
,splice
등을 사용하는 것이 좋습니다. 전체 어레이를 교체하려면 다음과 같이 하는 것이 좋습니다.으아악
사용해 보세요
http://plnkr.co/edit/6tNYE0boiI6CXdKtckpa?p=preview