AngularFire - 通过扭曲从数组中删除对象

时间:2013-10-02 18:23:53

标签: angularjs firebase angularfire

我已经修改了AngularFire聊天演示了很多。我被困在这一点上。我在用户登录时在Firebase上创建了一个数组,就像这样......

var url2 = 'https://<yoursite>.firebaseio.com/users';
$scope.$on("angularFireAuth:login", function(){
    $scope.loggedIn.add({newUser: $scope.user.username});
    });
$scope.loggedIn = angularFireCollection(new Firebase(url2).limit(50));

和html ...

<ul>
   <li ng-repeat="x in loggedIn | unique:'newUser' ">{{x.newUser }}</li>
</ul>

由于重复的每个项目都不是链接,并且li的每一行都没有按钮(这无论如何都不好),似乎唯一可行的是挂钩到$ scope。$ on(“angularFireAuth:logout”,function(){};我遇到的问题是将登录的特定用户传递给此函数,以便我可以拼接该索引。

此外,由于列表是从Firebase填充的,因此拼接似乎必须一直到Firebase并删除该索引。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最好使用对象而不是数组,并使用angularFire隐式服务来执行此操作。

您的用户名是否唯一?如果是这样,您可以执行以下操作:

$scope.loggedIn = {};
angularFire(new Firebase(url), $scope, 'loggedIn');
$scope.$on('angularFireAuth:login', function() {
  $scope.currentUser = $scope.user.username;
  $scope.loggedIn[$scope.currentUser] = true;
});
$scope.$on('angularFireAuth:logout', function() {
  delete $scope.loggedIn[$scope.currentUser];
});

否则,你可以使用ref.push()。name()为每个用户生成一个唯一的ID(并且仍然使用angularFire来绑定一个对象):

$scope.loggedIn = {};
angularFire(new Firebase(url), $scope, 'loggedIn');
$scope.$on('angularFireAuth:login', function() {
  $scope.currentUser = new Firebase(url).push().name();
  $scope.loggedIn[$scope.currentUser] = true;
});
$scope.$on('angularFireAuth:logout', function() {
  delete $scope.loggedIn[$scope.currentUser];
});