ng-repeat不绑定到列表项

时间:2017-08-14 08:37:42

标签: javascript angularjs ionic-framework backendless

我正在开发一个Ionic 1项目,我正在从Backendless服务器检索数据。使用ng-repeat时,正在检索数据,但未显示数据。这是我的代码:

HTML code:

<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页面上。刷新后,它会出现。如何让它出现在第一次加载?

2 个答案:

答案 0 :(得分:0)

您是否可以将推送响应数据用于范围变量,我认为这对您有帮助。

$scope.res.push(data);

答案 1 :(得分:0)

看起来Backendless不是一个角度服务,所以我猜测它是通过普通的http请求检索数据,而不是使用$ http服务。这意味着检索是在角度的摘要周期之外发生的,因此它不会相应地更新视图。

您可以通过在检索后将变量分配到$scope.apply();块中来修复它:

Backendless.Data.of("Hotels").find( queryBuilder )
    .then(function(foundHotels) {
        $scope.$apply(function() {
            $scope.res = foundHotels;
        });
        console.log($scope.res);
    })