我有一个组件:
@Component('Umbrella', {
selector: 'attachment-list',
templateUrl: '/AttachmentListComponent/AttachmentList.html',
bindings: {
mediaIds: '<',
}
})
public $onChanges() {
console.log(this.mediaIds);
}
我在CaseFlowComponent
:中使用该组件
组件:
我有一个上传方法:
public upload = (file: File) => {
if (!file || !this.state.caseHistory) return;
this.uploadService
.upload({
url: this.actionUrl,
data: { file },
method: 'POST'
})
.then((result: any) => {
this.state.caseHistory.media.push(result.data);
this.setMediaIds(result.data.id);
});
};
以及一个将上传文件的id推送到mediaIds
数组的方法。
private setMediaIds(mediaId: Guid) {
this.mediaIds.push(mediaId);
}
模板:
<attachment-list
media-ids='vm.mediaIds'
></attachment-list>
上传的文件id被正确添加到caseFlowComponent
中的this.mediaIds
数组,但attachment-list
组件中没有调用$onChanges
。
我认为$onChanges
应该在更新组件绑定时工作。
$onChanges
比较引用。您的选择是:
- 始终创建新数组
- 添加另一个输入以触发更改
- 手动运行手表