Angularjs AngularFire-通过扭曲从阵列中移除对象

Angularjs AngularFire-通过扭曲从阵列中移除对象,angularjs,firebase,angularfire,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.log

我已经修改了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));
var url=2https://.firebaseio.com/users';
$scope.$on(“angularFireAuth:login”,函数(){
$scope.loggedIn.add({newUser:$scope.user.username});
});
$scope.loggedIn=angularFireCollection(新Firebase(url2).limit(50));
对于html

<ul>
   <li ng-repeat="x in loggedIn | unique:'newUser' ">{{x.newUser }}</li>
</ul>
  • {{x.newUser}
由于重复的每一项都不是链接,并且li的每一行都没有按钮(这无论如何都不好),因此似乎唯一可行的方法是连接到$scope.$on(“angularFireAuth:logout”,function(){};但我遇到的问题是将登录的特定用户传递到此函数,以便我可以拼接该索引


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

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

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

$scope.loggedIn={};
angularFire(新Firebase(url),$scope,'loggedIn');
$scope.$on('angularFireAuth:login',function(){
$scope.currentUser=$scope.user.username;
$scope.loggedIn[$scope.currentUser]=true;
});
$scope.$on('angularFireAuth:logout',function(){
删除$scope.loggedIn[$scope.currentUser];
});
否则,您可以使用ref.push().name()为每个用户生成唯一的ID(并且仍然使用angularFire绑定对象):

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

我遇到的问题是,我没有(出于某种原因)使用angularFire,我使用的是angularFireAuth和angularFireCollection。我使用的是angularFireAuth.initialize(url,{scope:$scope,name:“user”});不确定这一切是如何工作的。因此,我将angularFire引入到混合中。使用这段代码,每当有人登录{{loggedIn}}是空数组,而{currentUser}显示当前登录的用户。{{loggedIn}是对象而不是数组。请尝试在$timeout块中包围“$scope.loggedIn[$scope.currentUser]=true”,可能是Angular没有在auth回调中拾取对$scope的更改。