我克隆了这个回购: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?
答案 0 :(得分:1)
使用
function replace() {...};
您正在定义一个函数,但不执行它。我猜你真正想要实现的是执行这两行:
var postscleaned = posts.replace( /&/g, '&' );
return(postscleaned);
而不只是给他们一个名字作为一个功能。
换句话说,您正在寻找的代码是:
load(url?) {
this.redditApi.fetch(url).subscribe((posts) => {
this.posts = posts;
var postscleaned = posts.replace( /&/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( /&/g, '&' );
}
this.loadCompleted = true;
console.log(postscleaned)
})
}
答案 1 :(得分:1)
Reddit API文档:
响应正文编码
由于遗留原因,所有JSON响应机构目前已将<
,>
和&
替换为<
,>
和{{1} }, 分别。如果您希望选择不使用此行为,请在请求中添加raw_json = 1参数。
所以:
www.reddit.com/r/longevity.json?
变为
www.reddit.com/r/longevity.json?raw_json=1
&安培; (&符号)现在可以正确显示。我不知道是否有任何性能缺陷。