アプリケーションに 1 人のユーザーがいるシナリオで AngularFire を使用することに成功していました。
認証を実行できるようになったので、主に正しく更新できないために、ユーザーを切り替えるときにitems
への割り当てが壊滅的であることに気付きました。$scope.items
$scope
ドキュメントから直接読む...
var ref = new Firebase('https://<my-firebase>.firebaseio.com/items');
angularFire(ref, $scope, 'items');
items
これらは、現在許可されているユーザーのみのものである必要があります。現在、私はこれを行っています(より良い方法があれば、遠慮なく教えてください!)
var ref = new Firebase('https://<my-firebase>.firebaseio.com/items/userId');
angularFire(ref, $scope, 'items');
userId
と を使用しauth.provider
て生成しauth.id
ます。私のアイテムがネームスペース化されたので(言ってみましょう)user1
var ref = new Firebase('https://<my-firebase>.firebaseio.com/items/[user1id]');
angularFire(ref, $scope, 'items');
にアイテムを追加します$scope.items
$scope.create = function(item) {
$scope.items.push(item)
/* Pretend the user adds these from the interface.
[
{ name: 'eenie' },
{ name: 'meenie' },
{ name: 'miney' },
{ name: 'moe' }
]
*/
}
問題
ログアウトして別のユーザーとしてログインすると、魔法のようにそのユーザーがログアウトeenie meenie miney
とログインの間に配列を保持しているmoe
ためです。$scope.items
ログアウト イベントを設定しようとしまし$scope.items = []
たが、実際にはすべてのレコードが空になります。髪を引っ張っています。これは、プロジェクトで必要な作業の 0.001% であり、週末全体を費やしています。
更新新しいメソッド
$scope.create = function() {
$scope.selectedDevice = {
name: 'New Device',
userId: $scope.user.provider + $scope.user.id
};
return $scope.devices.push($scope.selectedDevice);
};
$scope.$on('angularFireAuth:login', function(evt, user) {
var promise, ref;
ref = new Firebase('https://mysite.firebaseio.com/users/' + (user.provider + user.id) + '/registry/');
promise = angularFire(ref, $scope, 'devices');
});
ユーザーの ID でアイテムを正確に作成するようになりました。ただし、ログアウトして再度ログインすると、これらの項目は からクリアされません$scope.devices
。したがって、それらは自分自身をデータに追加するだけですが、新しくログインしたユーザーの下にあります。
アップデート
私は多くの試行錯誤をしました。私はおそらく、考えられるあらゆる組み合わせでログインイベントを設定$scope.devices
し[]
て移動しました。最終的に機能したのは、受け入れられた回答の@hiattpのフィドルでした。