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>
$scope
是 HTML
和 controller
之间的粘合剂。
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);
})
});
我正在使用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>
$scope
是 HTML
和 controller
之间的粘合剂。
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);
})
});