我正在使用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>
在发布请求后ng-repeat没有更新,但this.items的控制台日志是发布请求值。我如何提前感谢。
注意:我尝试了答案here,但它仍无效
答案 0 :(得分:1)
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);
})
});
答案 1 :(得分:0)
您必须使用有角度的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>
$scope
是您HTML
和controller
之间的粘合剂。