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并删除该索引。 有什么想法吗?

最好使用对象而不是数组,并且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];
});

最新更新