0

永続化のために Firebase を使用して、Angular アプリケーションに取り組んでいます。ページに複数の場所があり、それぞれにユーザー固有の情報 (プロフィール写真、現在のログイン状態など) が表示されます。

私は、3 通りのデータのデータバインディングを受け入れ、適切な関心の分離を維持できるようにする「良い」ソリューションを考え出すのに苦労しています。

私の問題の非常に具体的な例について。/users/x/messages にある firebase からメッセージのリストを取得する HeaderMessagesCtrl があります。fromUserId を含むメッセージは、$scope.messages にバインドされます。

メッセージ コレクションで ng-repeat を実行する角度のあるビューがあり、行ごとに fromUserId を使用して、ユーザーのログイン ステータス、profilePicUri などを判断したいと考えています。

http://jsfiddle.net/brkAq/5/

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の「関係のない」性質です。

4

0 に答える 0