2016-05-28 51 views
1

ファイヤーベース配列で返されたデータにアクセスしようとしていて、これらのオブジェクトのうち1つを返しています - ファイヤーベース配列が3つのオブジェクトを返しています。データを比較する。実際に何をすべきかわからない:firebaseArrayをループして1つのオブジェクトを返す必要があります

その関数getNewsDetailが問題です。

Firebaseレイアウトを含め
angular.module('news.services', ['ionic', 'firebase' ]) 
.factory('NewsItems', ['$firebaseArray', function($firebaseArray){ 
    var newsRef = new Firebase ('https://xxxx.firebaseio.com/newsitems'); 

    var theNewsItems = [$firebaseArray(newsRef)]; 
    //alert($firebaseArray(newsRef).length) 
    return{ 
    getNewsItems: function(){ 
     return $firebaseArray(newsRef); 
    }, 
    getNewsDetail: function(newsID){ 
     for(var i = 0; i < theNewsItems.length; i++){ 
      if(theNewsItems[i].id == parseInt(newsID)){ 
       return theNewsItems[i]; 
      } 
     } 
     return null; 
    } 
    }; 

}]); 

 newsitems 
      -KIip4vmlntvakLoBAXA 
       Detail: "Detail Y" 
       Title: "Title X" 
       id: 0 
      -KIipATckNU1WzEhkY9- 
       Detail: "Come down and play with us" 
       Title: "New Players Welcome" 
       id: 1 
      -KIipHiM2NYlh_BgG8UM 
       Detail: "story 3" 
       Title: "title 3" 
       id: 2 

答えて

0

あなたはAngularJSビューでFirebaseから単一のオブジェクトを使用したい場合は、あなたが$firebaseObjectを使用しています。だから、:

getNewsItems: function(){ 
    return $firebaseArray(newsRef); 
}, 
getNewsDetail: function(newsID){ 
    return $firebaseObject(newsRef.child(newsID); 
} 

Firebaseは、それが既にメモリにそれを持っているならば、それは、それをリロードしないであろうことをそのデータのロードに十分なインテリジェントです。

+0

おかげさまでフランクは私が望むものに近いが、正確ではないと思う - 私はファイヤーベースのレイアウトを追加して、おそらくもっと理にかなっていると思う。例えば。私が2のidを渡すと、リストの最後のnewsItemが返されると思います。 –