Firebase查询的奇怪行为

时间:2013-04-14 16:02:27

标签: firebase

我正在开发一个应用程序,用于存储工作项列表,这些工作项按计划日期排序。我有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上进行测试。

0 个答案:

没有答案