我已经修改了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并删除该索引。 有什么想法吗?
最好使用对象而不是数组,并且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];
});