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