onChanges不适用于组件绑定



我有一个组件:

@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比较引用。您的选择是:

  • 始终创建新数组
  • 添加另一个输入以触发更改
  • 手动运行手表

最新更新