1

ng-repeat に投稿のリストを含むビューがあります。ユーザーが投稿をクリックすると、選択した投稿の詳細ページにルーティングされます。

いくつかのルーティングをセットアップしましたが、詳細ビューに正しい投稿をロ​​ードさせるためにコントローラーに注入した id パラメーターをどうするかを理解するのに問題があります。

また、投稿の識別子として正しい値を渡しているかどうかもわかりません。投稿は Firebase に配列として保存されますが、FIrebase ID を保存するためにデータを読み込むときに何かをする必要があるかどうかはわかりません。ロードしたデータ内に明示的な一意の識別子はありません。

投稿リスト ビュー:

<div id='posts' ng-controller="PostsCtrl">

      <ul>
          <div id='post' ng-repeat="post in posts track by $id($index)">
              <div id='postMedia'>
              <img id='media' ng-click="go('/post/{{$id}}')" ng-src=   {{post.attachment}} />
              </div>
              <div id="articleRight">
                  <div ng-click="go('/post')">{{post.message}}</div>

ポストコントローラー:

myApp.controller('PostsCtrl', ['$scope', 'angularFire', '$routeParams',
function ($scope, angularFire, $routeParams) {
var url = 'https://inviter-dev.firebaseio.com/posts';
$scope.items = angularFire(url, $scope, 'posts',  [] );
$scope.currentPost = $scope.items[$routeParams.postid]

投稿の詳細ビュー:

 <div class="container">

      <h1>{{$scope.$currentPost.message}}</h1>

      <ul>

              <div id='postMedia'>
              <img ng-click="" ng-src={{post.attachment}} />
              </div>
              <div ng-click="">
                  <div ng-click="">{{posts[$route.current.params.postid].message}}</div>

ルーティング:

 $routeProvider.when('/post/:postid', {
    templateUrl:'partials/post.html',
    authRequired: true,
    controller:'PostsCtrl'
})
4

2 に答える 2

1

$.on メソッドを使用して、コントローラー内にロードされるデータをリッスンしました。その後、詳細を表示したい特定の記事 (投稿/アイテム) に新しいスコープ変数を割り当てました。

$scope.articles = $firebase(ref);

$scope.articles.$on("loaded", function() {
  $scope.article = $scope.articles[$routeParams.article_id];
});

$scope.articles.$on("change", function() {
  $scope.article = $scope.articles[$routeParams.article_id];
});

詳細ビューでアイテムを作成および更新する場合は、「変更」セクションが必要です。これにより、リスト部分が正しく同期されます。

于 2014-03-04T04:39:11.993 に答える