ng-repeat 在 restangular post 请求后更新

ng-repeat does updated after restangular post request

我正在使用angularjs 1.5.8我的控制器代码如下

angular.module('testmodule')
 .controller('prd',function($scope,Restangular){
    this.items = [];

this.postbody = { "Filter": 700 } ;

Restangular.all('allPrd').post(this.postbody).then(function(data){
   this.items = Restangular.copy(data.tiles);
   console.log(this.items);
})

});

而我的模板如下

<div ng-controller="prd as prd2">
   <div ng-repeat='item in prd2.items>
     {{prd2.items}}  
</div>
</div>

post 请求后 ng-repeat 不会更新,但 this.items 的控制台日志是 post 请求值。我该如何进行提前谢谢。

注意:我尝试了答案 here,但仍然无效

你必须使用 angular 2 way bind:

angular.module('testmodule')
 .controller('prd',function($scope,Restangular){


this.postbody = { "Filter": 700 } ;
$scope.items = {};
Restangular.all('allPrd').post(this.postbody).then(function(data){
   $scope.items = Restangular.copy(data.tiles);
   console.log($scope.items);
})

});

在你的 HTML:

<div ng-controller="prd as prd2">
   <div ng-repeat='item in items'>
     {{item}}  
</div>
</div>

$scopeHTMLcontroller 之间的粘合剂。

then 内部回调 this 只是全局对象。

所以,this没有items

而是将 items 分配给全局对象,它不会反映在您的控制器中

使用var self = this

.controller('prd',function($scope,Restangular){
var self = this;    
self.items = [];

this.postbody = { "Filter": 700 } ;

Restangular.all('allPrd').post(this.postbody).then(function(data){
   self.items = Restangular.copy(data.tiles);
   console.log(this.items);
})

});