我已经修改了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并删除该索引。有什么想法吗?
答案 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];
});