Javascript 在页面上显示从解析获得的数据

Javascript 在页面上显示从解析获得的数据,javascript,angularjs,arrays,parse-platform,parse-server,Javascript,Angularjs,Arrays,Parse Platform,Parse Server,我在解析服务器上有一个offers表和users表。我对他提供的表做了一个查询,结果非常好(控制台日志和html—我对async和Q.promise都有问题)。现在我尝试添加users表中的两个元素。我在控制台上得到它,但不在页面上。以下是我提供的服务。服务: this.getAllOffers = function () { var Q = $q.defer(); console.log('getAllOffers called'); //all offer

我在解析服务器上有一个offers表和users表。我对他提供的表做了一个查询,结果非常好(控制台日志和html—我对async和Q.promise都有问题)。现在我尝试添加users表中的两个元素。我在控制台上得到它,但不在页面上。以下是我提供的服务。服务:

    this.getAllOffers = function () {

    var Q = $q.defer();
    console.log('getAllOffers called');

    //all offers filter is selected
    this.allOffersFilter = false;

    var offers = Parse.Object.extend("Offer");
    var exchanges = Parse.Object.extend("Exchanges");
    var users = Parse.Object.extend("User");

    var query = new Parse.Query(offers);
    var userQuery = new Parse.Query(users);

    var results = [];

    query.descending("createdAt");
    query.limit(4);

    userQuery.find().then(function(users) {
        for (i = 0; i < users.length; i++) {
            foundUsers = users[i];

            query.find().then( function(offers){
            for(i = 0; i < offers.length; i++){
                found = offers[i];
            var result = {};

            result.date = found.get("createdAt");
            result.price = found.get("price");
            result.status = found.get("accepted");
            result.lastName = foundUsers.get("lastName");
            result.companyName = foundUsers.get("companyName");

            console.log(result.companyName);
            console.log(result.price);
        }
    });
    results.push(result);
  }
  Q.resolve(results);
    });
  return Q.promise;
  };

提前谢谢

在angularjs中执行
ng if
时,它实际上会取出元素,当它放入元素时,它是作为子范围。要解决此问题,您需要确保在
ng if
中的任何子元素上放置
$parent
。见下文。确保使用
track by$index
to重复其良好实践。还请注意,您不需要重复中的任何内容,因为它引用的是已定义的
报价

代码:


{{offer.username}
{{offer.companyName}
{{offer.date}
{{offer.price}}
{{offer.status}

在填充
结果之前,您正在解析
$q
,因此,您的列表为空


我不知道
Parse server
,但是如果
userQuery.find()。那么
async
,那么需要移动
Q.resolve(结果)在它里面,或者可能在
query.find()里面。那么

你能显示你的html吗?这将让我进一步帮助你。是的!对不起,我以前应该做的。我刚才补充了这个问题。谢谢!$onInit函数回调中的OfferList是什么。它是空的吗?@Ohjay44,是的,它是空的。它仍然没有显示在页面上。我真的不认为问题出在html上,我的回电是空的,即使在做承诺的时候。如果我删除用户的查询,我会在页面上获得所有报价信息,但我需要在页面上同时显示用户和报价。如果您的报价列表为空,则您肯定要查看查询。上面解释了角度方面的问题,但听起来您的问题与角度代码无关。因为它在控制台上显示数据,我相信查询是有效的。谢谢你的帮助!=)您的查询是有效的,但我要指出的是,如果回调中的offersList为空,则返回不会返回到angular,这意味着您可能无法正确返回。
    <!--List of offers-->
    <div class="col-md-3">
        <h4>List of offers</h4>

        <div ng-if="offersList">
            <div ng-repeat="offer in offersList">
                <div class="offer card">
                    <div>{{offer.username}}</div>
                    <div>{{offer.companyName}}</div>
                    <div>{{offer.date}}</div>
                    <div>{{offer.price}}</div>
                    <div>{{offer.status}}</div>
                </div>
            </div>
        </div>
        <div ng-if="!(offersList)">There are no offers</div>
    </div>
angular.module('offersPage')
.component('offersPage', {
    templateUrl: 'pages/offers-page/offers-page.template.html',
    controller: function(AuthService, PageService, OffersService, 
$scope) {
        // Functions for offers-page

        // Check if user is logged in and verified on page load
        AuthService.userLoggedin(function(loggedIn, verified) {
            if(!verified) {
                PageService.redirect('login');
            }
        });

        this.$onInit =  function() {
            OffersService.getAllOffers().then(function(offersList) {

            $scope.offersList = offersList;
            });
      }
    }
});
<div ng-if="offersList">
            <div ng-repeat="offer in $parent.offersList track by $index">
                <div class="offer card">
                    <div>{{offer.username}}</div>
                    <div>{{offer.companyName}}</div>
                    <div>{{offer.date}}</div>
                    <div>{{offer.price}}</div>
                    <div>{{offer.status}}</div>
                </div>
            </div>
        </div>