使用AngularJS从<description> RSS提要中提取图像

时间:2016-01-28 16:46:07

标签: javascript angularjs rss

我正在尝试在构建简单的RSS提要时学习AngularJS。我设法发出JSON请求并检索所有数据,标题,链接,描述和我解析的所有RSS。我提取这样的图像:

angular.forEach(feed.entries, function(value){
        value.myImage = $(value.content).find('img').eq(0).attr('src');
        console.log('image' + value.myImage);
}

但是,有些Feed具有不同的结构,而是将图像放在<content> </content> <description> </description>内,angular.forEach(feed.entries, function(value){ value.myImage = $(value.description).find('img').eq(0).attr('src'); console.log('no image' + " " + value.myImage); }); 就像this一样放在Object {feedUrl: "https://www.behance.net/rss", title: "Behance Featured Projects", link: "http://www.behance.net", author: "", description: "The latest projects featured on the Behance"…} $$hashKey: "027" author: "" description: "The latest projects featured on the Behance" entries: Array[10] 0: Object $$hashKey: "029" author: "" categories: Array[0] content: "<img src="https://mir-s3-cdn-cf.behance.net/projects/404/2e322a33145177.Y3JvcCw4NzYsNjg0LDAsNzc.jpg" style="float:left;margin-right:15px"><br> Various Illustrations by Patryk Hardziej / 2015" contentSnippet: " Various Illustrations by Patryk Hardziej / 2015" link: "https://www.behance.net/gallery/33145177/Various-Illustrations-2015" publishedDate: "Thu, 28 Jan 2016 08:00:02 -0800" sImage: undefined title: "Various Illustrations 2015" 内。我试图这样做:

li

但我得到的都是未定义的,所以我无法显示此Feed中的图像。我尝试了不同的方法,但我真的迷路了,我不确定我在这里做错了什么。

我一直在谷歌上搜索这几周。任何帮助都非常感激!

谢谢:)

这是我得到的JSON对象。

$('ul.internal-nav-list > li').on('click', function () {
  $(this).siblings('li').slideUp();
  $(this).slideDown();
});

1 个答案:

答案 0 :(得分:1)

好的,我想我找到了它。)

您从查询中获得的HTML看起来像

<img src="..."> Some text <br/> Some text ...

find方法仅用于查找子节点。在这种情况下,img不是value.content的子项,因此它不会返回任何内容。

你可以做到

angular.forEach(feed.entries, function(value){
  // force creation of a root node -> find method should works for all cases
  var content = '<div>'+value.content+'</div>';
  value.myImage = $(content).find('img').eq(0).attr('src');
  console.log('image' + value.myImage);
}