2017-08-09 4 views
0

JavaScriptでstack overflowの回答を参照していますが、角度jで対応できません。 RSSをソートするsort rss角度jsのニュース

javascriptの答え日付に応じフィード(一番上の最新のは)

data.query.results.rss.sort(function(item1, item2) { 
    var d1 = new Date(item1.channel.item.pubDate) 
    var d2 = new Date(item2.channel.item.pubDate) 
    return d2.getTime() - d1.getTime() 
}) 

次のように私の角度のjs(イオン性フレームワーク)で以下の通りです:

  $webServicesFactory.get(
        "https://www.google.com/finance/company_news", 
        {}, 
        { 
        output: "rss", 
        q: stock.e +":"+ stock.t 
        } 
       ).then(
        function success(xmlData) { 
        var x2js = new X2JS(); 

        $globalFactory.personalStockNews = x2js.xml_str2json(xmlData).rss.channel.item; 

    $globalFactory.personalStockNews.sort(function(item1, item2) { 
     var d1 = new Date(item1.channel.item.pubDate); 
     var d2 = new Date(item2.channel.item.pubDate); 
     return d2.getTime() - d1.getTime(); 
}) 
        console.info($globalFactory.personalStockNews); 
        $ionicLoading.hide(); 
        $state.go("app.home"); 
        }, 
        function error(error) { 
        $globalFactory.personalStockNews = null; 

        $ionicLoading.hide(); 
        $state.go("app.home"); 
        } 
       ); 

       }, 
       function error(error) { 
       $ionicLoading.hide(); 
       } 
      ); 

ただし、期待どおりに並べ替えられませんでした。 javascriptを角度jに変更するにはどうすればよいですか?

以下のRSSフィードを 'https://www.google.com/finance/company_news?q=SGX:533&ei=EeiDWaGGMpXUuATxloPgAw&output=rss'にすると、rssベースを日付順に並べ替えることができます。 HTMLで

、コードは以下の通りです:

<a class="item item-icon-right" ng-if='showmore' ng-repeat="item in rssNews| orderBy: 'pubDate':true" ng-click="openitems(item.link)"> 
    <h2>{{item.title}}</h2> 
    <h6>{{item.pubDate}}</h6> 
    <p {{story.description | htmlToPlaintext}}</p> 
    </div> 
    </a> 

答えて

0

私はのようなあなたのソート機能が何かを見てすべきだと思う:あなたは望ましい結果が何であるかを述べた場合、それが役立つだろう。もちろん、

function(item1, item2) { 
    var d1 = new Date(item1.channel.item.pubDate) 
    var d2 = new Date(item2.channel.item.pubDate) 

    if (d1>d2) return -1 
    if (d2>d1) return 1 
    return 0 
} 

質問に。 :)

また、ng-repeatのorderbyも削除してください。コントローラーで行っている配列の並べ替えがオーバーライドされています。

+0

こんにちは。私はstackoverflowの例のように、最新のrssリンクを一番上に並べ替えたい。しかし、角度jsでそれをソートすることができません – bkcollection

+0

あなたのコードを試してください、それはまだソートすることができません。おそらくあなたはRSSフィードを試すことができますhttps://www.google.com/finance/company_news?q=SGX:533&ei=EeiDWaGGMpXUuATxloPgAw&output=rss – bkcollection

+0

まあ、私は問題が1つを参照してください。私は自分の答えを更新しました。私はあなたの元の並べ替え機能が実際に動作すると思うのは、ng-repeatをドロップした後です。 –