嘿伙计们,我是Ionic的新手,我有很多疑惑。在我的项目中,我有请求,每个请求都有一系列提案。但是,当我从数据库中提取列表时,我只想表明谁是“赢家”的提议,他们的请求是“完成”,你们得到了吗?我会展示代码。
Html`
<ion-segment-button value="third" (click)="getProposal('Winner')">
Aceitas
</ion-segment-button>
打字稿
getProposals(status: string) {
if (status === 'Winner') {
this.requestService.getProposalsPartner(this.user.email, status).then( resposta => {
let proposalsWinner = resposta;
for (let i in proposalsWinner) {
if (proposalsWinner[i].request.status != 'Finished') {
this.proposals = resposta;
}
}
})
} else {
this.requestService.getProposalsPartner(this.user.email, status).then( resposta => {
this.proposals = resposta;
})
}
}
所以我试图制作一个for,并且只列出了我所提到的模式之后的提案。我已经测试过它并没有按照我想要的方式工作。我的代码出了什么问题?
答案 0 :(得分:1)
首先,值得一提的是,您不应该将<android.support.design.widget.TextInputLayout
android:id="@+id/firstNameTextInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@drawable/test">
<android.support.design.widget.TextInputEditText
android:id="@+id/firstNameTextInputEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/firstName"
android:inputType="textPersonName"
tools:ignore="MissingPrefix" />
</android.support.design.widget.TextInputLayout>
与数组一起使用。
为什么? 从this answer引用:
其他人提到的for ... in语法用于循环遍历 对象的属性;因为JavaScript中的数组只是一个对象 使用数字属性名称(以及自动更新的&#34;长度&#34; 你可以理论上用它循环一个数组。但是 问题是它并没有将自己限制在数字属性中 值(请记住,偶数方法实际上只是其中的属性 value是一个闭包),也不是按数字顺序迭代它们。 因此,for ... in语法不应该用于循环 阵列。
请参阅this question以查看与。
相关的更多答案也就是说,您的代码中的主要问题是您并未真正过滤for..in
数据,您只是将resposta
分配给{ resposta
。要进行过滤,您可以使用(当然)Array#filter
,如下所示:
this.proposals
最终代码:
this.proposals = response.filter(res => res.request.status !== 'Finished');
<强>模板:强>
getProposals(status: string) {
this.requestService.getProposalsPartner(this.user.email, status).then(response => {
if (status === 'Winner') {
this.proposals = response.filter(res => res.request.status !== 'Finished');
} else {
this.proposals = response;
}
});
}