ng-repeat 不绑定到列表项
ng-repeat not binding to list item
我正在做一个 Ionic 1 项目,我从 Backendless 服务器检索数据。使用 ng-repeat 时,正在检索数据,但未显示数据。这是我的代码:
HTML代码:
<ion-view view-title="Hotels" ng-controller="AgHotelCtrl">
<ion-content>
<ion-refresher pulling-text="Pull to refresh..." on-refresh="doRefresh()">
</ion-refresher>
<ul class="list">
<li ng-repeat="r in res" class="item">
<h2>{{r.name}}</h2>
<p>{{r.locality}}</p>
</li>
</ul>
</ion-content>
</ion-view>
JS代码:
.controller('AgHotelCtrl', function($scope, $state) {
var init = function() {
console.log("hola");
var user = $state.params.user;
$scope.res=[];
var whereClause = "agent_email = '" + user.email + "'";
var queryBuilder = Backendless.DataQueryBuilder.create().setWhereClause( whereClause );
Backendless.Data.of("Hotels").find( queryBuilder )
.then(function(foundHotels) {
$scope.res = foundHotels;
console.log($scope.res);
})
.catch(function(error) {
console.log("error" + error.message);
})
}
init();
$scope.doRefresh = function () {
init();
$scope.$broadcast ('scroll.refreshComplete');
}
})
数据显示在控制台上,但未出现在 HTML 页面上。刷新后出现。如何让它也出现在第一次加载时?
您可以使用推送响应数据来限定变量范围吗,我认为这会对您有所帮助。
$scope.res.push(data);
看起来 Backendless 不是 angular 服务,所以我猜它是通过普通的 http 请求检索数据,而不是使用 $http 服务。这意味着检索发生在 angular 的摘要周期之外,因此它不会相应地更新视图。
您可以通过在检索后将变量分配包装在 $scope.apply();
块中来修复它:
Backendless.Data.of("Hotels").find( queryBuilder )
.then(function(foundHotels) {
$scope.$apply(function() {
$scope.res = foundHotels;
});
console.log($scope.res);
})
我正在做一个 Ionic 1 项目,我从 Backendless 服务器检索数据。使用 ng-repeat 时,正在检索数据,但未显示数据。这是我的代码:
HTML代码:
<ion-view view-title="Hotels" ng-controller="AgHotelCtrl">
<ion-content>
<ion-refresher pulling-text="Pull to refresh..." on-refresh="doRefresh()">
</ion-refresher>
<ul class="list">
<li ng-repeat="r in res" class="item">
<h2>{{r.name}}</h2>
<p>{{r.locality}}</p>
</li>
</ul>
</ion-content>
</ion-view>
JS代码:
.controller('AgHotelCtrl', function($scope, $state) {
var init = function() {
console.log("hola");
var user = $state.params.user;
$scope.res=[];
var whereClause = "agent_email = '" + user.email + "'";
var queryBuilder = Backendless.DataQueryBuilder.create().setWhereClause( whereClause );
Backendless.Data.of("Hotels").find( queryBuilder )
.then(function(foundHotels) {
$scope.res = foundHotels;
console.log($scope.res);
})
.catch(function(error) {
console.log("error" + error.message);
})
}
init();
$scope.doRefresh = function () {
init();
$scope.$broadcast ('scroll.refreshComplete');
}
})
数据显示在控制台上,但未出现在 HTML 页面上。刷新后出现。如何让它也出现在第一次加载时?
您可以使用推送响应数据来限定变量范围吗,我认为这会对您有所帮助。
$scope.res.push(data);
看起来 Backendless 不是 angular 服务,所以我猜它是通过普通的 http 请求检索数据,而不是使用 $http 服务。这意味着检索发生在 angular 的摘要周期之外,因此它不会相应地更新视图。
您可以通过在检索后将变量分配包装在 $scope.apply();
块中来修复它:
Backendless.Data.of("Hotels").find( queryBuilder )
.then(function(foundHotels) {
$scope.$apply(function() {
$scope.res = foundHotels;
});
console.log($scope.res);
})