Reddit API:我如何转换&到&在Angular / Typescript / Ionic中?

时间:2017-01-28 11:19:34

标签: javascript angularjs typescript

我克隆了这个回购:https://github.com/smartapant/ionic2-reddit-reader

它读取Reddit,但返回&&

此函数返回新的Reddit帖子:

 load(url?) {
        this.redditApi.fetch(url).subscribe((posts) => {
        this.posts = posts;
        this.loadCompleted = true;
        console.log(posts)
      })
    }

我把它改为:

  load(url?) {
        this.redditApi.fetch(url).subscribe((posts) => {
        this.posts = posts;
        function replace() {
            var postscleaned =  posts.replace( /&/g, '&' );
            return(postscleaned);
    };
        this.loadCompleted = true;
        console.log(postscleaned)
      })
    }

......遵循这些问题的建议:

Decode & back to & in JavaScript

Convert json & to & in AngularJS

并将postscleaned: Array<any>添加到导出类PostsPage。

它构建正常,但我得到一个Typescript错误 Cannot find name 'postscleaned'.

解决此问题的最佳方法是什么?有没有一种方法可以在Typescript中使用而不是Javascript?

2 个答案:

答案 0 :(得分:1)

使用

function replace() {...};

您正在定义一个函数,但不执行它。我猜你真正想要实现的是执行这两行:

var postscleaned =  posts.replace( /&amp;/g, '&' );
return(postscleaned);

而不只是给他们一个名字作为一个功能。

换句话说,您正在寻找的代码是:

load(url?) {
    this.redditApi.fetch(url).subscribe((posts) => {
    this.posts = posts;
    var postscleaned =  posts.replace( /&amp;/g, '&' );
    this.loadCompleted = true;
    console.log(postscleaned)
  })
}

但是,帖子看起来像是字符串数组而不是单个字符串,因此 正在寻找的内容可能是:

load(url?) {
    this.redditApi.fetch(url).subscribe((posts) => {
    this.posts = posts;
    var postscleaned = [];
    for (int i=0; i<posts.length; i++) {
      postscleaned[i] = posts[i].replace( /&amp;/g, '&' );
    }
    this.loadCompleted = true;
    console.log(postscleaned)
  })
}

答案 1 :(得分:1)

Reddit API文档:

响应正文编码

由于遗留原因,所有JSON响应机构目前已将<>&替换为&lt;&gt;和{{1} }, 分别。如果您希望选择不使用此行为,请在请求中添加raw_json = 1参数。

所以:

www.reddit.com/r/longevity.json?

变为

www.reddit.com/r/longevity.json?raw_json=1

&安培; (&符号)现在可以正确显示。我不知道是否有任何性能缺陷。