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