永続化のために Firebase を使用して、Angular アプリケーションに取り組んでいます。ページに複数の場所があり、それぞれにユーザー固有の情報 (プロフィール写真、現在のログイン状態など) が表示されます。
私は、3 通りのデータのデータバインディングを受け入れ、適切な関心の分離を維持できるようにする「良い」ソリューションを考え出すのに苦労しています。
私の問題の非常に具体的な例について。/users/x/messages にある firebase からメッセージのリストを取得する HeaderMessagesCtrl があります。fromUserId を含むメッセージは、$scope.messages にバインドされます。
メッセージ コレクションで ng-repeat を実行する角度のあるビューがあり、行ごとに fromUserId を使用して、ユーザーのログイン ステータス、profilePicUri などを判断したいと考えています。
function HeaderMessagesCtrl($scope, $timeout) {
$scope.messages = [
{fromUserId: 1},
{fromUserId: 2}
];
$timeout(function(){
$scope.messages.push({fromUserId: 3});
}, 1500);
}
上記のフィドルは、後で変更されるサンプル コレクションを示しています。これが解決策の例を提供するのに役立つことを願っています。
前もって感謝します。
編集
パターンの提案を求められたので、最初に思いついたのは以下です。
firebaseが更新する配列を含むスコープ変数にウォッチを作成することを考えていました。このウォッチは UserService にアクセスして profilePicUri を取得し、firebase のデータの正確なレプリカではなく、ビュー モデルに似たスコープ配列を作成します。
もう 1 つのオプションは、ユーザー ID を提供できる user-profile-box ウィジェットを作成することでした。これにより、UserService から uri が特定され、それらの詳細を使用してウィジェット html などが作成されます。
いずれにせよ、私の苦労はfirebaseの「関係のない」性質です。