0

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 までずっと移動し、そのインデックスを削除する必要があるようです。何か案は?

4

1 に答える 1

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];
});
于 2013-10-02T19:53:18.227 に答える