我正在开发一个应用程序,用于存储工作项列表,这些工作项按计划日期排序。我有2个查询,1个用于监控具有最高优先级的项目(最新时间表),另一个用于监控具有最低优先级的项目(最早的时间表):
var FB = new Firebase('https://pckben-testquery.firebaseio-demo.com/');
FB.startAt().limit(1).on('child_added', function(snapshot) {
var topItems = JSON.stringify(snapshot.name());
$("#topItems").text(topItems);
});
FB.endAt().limit(1).on('child_added', function(snapshot) {
var lastItems = JSON.stringify(snapshot.name());
$("#lastItems").text(lastItems);
});
我的数据类似于:
a: 1365931229230 <-- scheduled date, also set as its priority
b: 1365931230662
c: 1365931241984
d: 1365931258729
e: 1365931266804
结果与预期不符:它为#topItems
和#lastItems
输出顶部项目&#34; a&#34;。
但如果我包含另一个查看整个列表的查询,那么一切都按预期工作:
$scope.items = []; // I'm using AngularJS
FB.on('value', function(snapshots) {
$scope.items = [];
snapshots.forEach(function(ss) {
$scope.items.push({
name: ss.name(),
schedule: ss.val()
});
});
if (!$scope.$$phase) $scope.$apply();
});
要了解此行为,请先转到http://jsbin.com/azisuf/1/edit,然后转到http://jsbin.com/ejujef/1/edit。单击更新按钮将项目移动到最后一行。您将在第一个版本中看到&#34; Last Rows&#34;部分不会按预期显示最后一行,而在第二个版本中则显示。
代码在Chrome和Safari上进行测试。