离子列表+ firebase绑定不起作用

时间:2015-06-18 21:26:58

标签: javascript angularjs firebase ionic-framework angularfire

我正在使用Ionic和Firebase构建应用。我有一个FirebaseArray,其中包含服务器端带日期的事件。

我希望能够按日期在客户端对这些事件进行排序。

目标是使用这些事件填充离子列表并按日期排序(今天,本周,之后)。

问题是在检索完所有事件后,我按日期在本地$ scope.arrays中对它们进行排序以填充离子列表。由于它不再是FirebaseArrays,因此数据和列表之间没有绑定。 (检索事件后工作,但如果我向FirebaseArray添加另一个事件,则它不会显示在离子列表中)。

有人可以帮我解决这个问题吗?我不需要一个实际的代码,但更多的是一种思考方式,也许还有我不知道的angularFire方法。

这是我正在使用的服务:

angular.module('starter.services', ['firebase'])

.factory('Soirees', function($firebase, $firebaseArray) {
  var soireesRef = new Firebase('https://partey.firebaseio.com/soirees');
  var soirees = $firebaseArray(soireesRef);

  return {
    all: function() {
      return soirees;
    }, add: function(soiree) {
      soirees.$add(soiree);
    }, remove: function(soiree) {
      soiree.$remove(soiree);
    }, get: function(soiree) {
      return soirees.$getRecord(soiree);
    }
  };
});

这是我的控制器:

.controller('EventsCtrl', function($scope, $state, $ionicLoading, Soirees) {

  $scope.soirees = Soirees.all();
  $scope.soireeDay = [];
  $scope.soireeWeek = [];
  $scope.soireeFurther = [];
  var currentDate = new Date();


  $scope.soirees.$loaded().then(function() {
    angular.forEach($scope.soirees, function(soiree){
      if (Math.abs(currentDate - soiree.date) <= 1000*60*60*24) {
        $scope.soireeDay.push(soiree);
      } else if (Math.abs(currentDate - soiree.date) > 1000*60*60*24 &&    Math.abs(soiree.date - currentDate) <= 7*1000*60*60*24) {
        $scope.soireeWeek.push(soiree);
      } else {
        $scope.soireeFurther.push(soiree);
      }
    })

    $scope.soireeDayNumber = $scope.soireeDay.length;
    $scope.soireeWeekNumber = $scope.soireeWeek.length;
    $scope.soireeFurtherNumber = $scope.soireeFurther.length;
  })

})

编辑: 我使用以下过滤器:

.filter('soireeDay', function() {
  return function(item) {
    var currentDate = new Date();
    console.log(currentDate);
    if (Math.abs(currentDate - item.date) <= 1000*60*60*24) {
     return true
    } else {
     return false
    }}
})

在我的html文件中:ng-repeat =&#34; soiree in soirees |滤波器:soireeDay&#34;

但它看起来没有调用liker过滤器。任何提示?

谢谢大家,

阿诺

0 个答案:

没有答案