按角度js

时间:2017-08-09 15:05:20

标签: javascript angularjs ionic-framework rss

我在JavaScript中引用stack overflow答案,但我无法在角度js中使用它。

根据日期(最新的),javascript回答对RSS订阅源进行排序如下所示

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修改为角度js?

您可以使用下面的RSS Feed ' 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>

1 个答案:

答案 0 :(得分: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。这会覆盖你在控制器中进行的数组排序。