【发布时间】:2016-12-23 17:27:47
【问题描述】:
我希望能够在单击离子项目时在绿色和红色之间更改颜色。
下面的代码从 JSON 字符串中检索多个名称和颜色,并且可以正常工作。
<ion-item *ngFor="let data of data" [style.backgroundColor]="data?.color" (click)="PostData(data)">
{{data?.name}}
</ion-item>
但是当我想将数据传回一个函数时问题就开始了,因此我可以使用 PUT 方法将新数据发送回我从中获取 JSON 字符串的 API。
PostData(data) {
var url = 'http://www.external.tld/page/'+data?.id; // append the id to the url
if (data?.color == 'red') {data?.color = 'green'};
if (data?.color == 'green') {data?.color = 'red'}; // toggle color
let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded'});
let options = new RequestOptions({ headers: headers });
return this.http.put(url, JSON.stringify({"name": new String(data?.name), "color": new String(data?.color)}), options)
.map(res => res.json()); // send name and toggled color
}
我是 angular 2 的菜鸟,所以我不知道我在做什么对错。
奖励:我还没有让 PUT 方法工作(如果可能的话,我什至更喜欢在没有 JSON 的情况下发送数据(名称和颜色)。
【问题讨论】:
-
请说明问题所在。此外,
data?.id不是有效的 Typescript。 -
在 html 中,我使用 data?.color 和 data?.name 来获取所有名称和颜色的当前索引。我想在 ts 文件中使用相同的数据,但我不知道如何。
-
说得更简单:如果我单击名称为 test 且颜色为红色的第二个项目。然后我只想在 ts 文件中检索该名称和颜色,将颜色切换为绿色并使用工作 put 函数发送名称和颜色。
-
@torazaburo 在 PostData 方法的主体中。
标签: angular