Почему новые строки не добавляются в ag-grid с помощью vuejs?
У меня есть компонент ag-grid в приложении vue.js, объявленный следующим образом:
<ag-grid-vue :enable-sorting="false"
:enable-filtering="false"
:suppressDragLeaveHidesColumns="true"
:rowData="category.policyDocuments"
:gridOptions="policyGridOptions"
@cellValueChanged="savePolicyRow"
@grid-ready="onPolicyGridReady($event, category)"
class="w-100"
style="height: 200px">
</ag-grid-vue>
Связан с этой моделью представления машинописного текста:
export class PolicyListViewModel {
status: PolicyDashboardStatus;
policyLists: DocumentWalletPolicyDocumentList[] = [];
gridApi: GridApi | null = null;
policyDocuments: DocumentWalletDocumentViewModel[] = [];
constructor(status: PolicyDashboardStatus) {
this.status = status;
}
get shouldShow(): boolean {
return this.policyDocuments.length > 0;
}
updateDocuments(): void {
this.policyDocuments = this.policyLists
.map(list => list.policyDocuments)
.reduce((a, b) => a.concat(b), []);
}
}
Когда моя страница отображается впервые, я получаю правильные данные. Когда я звонюupdateDocuments
с новыми данными сетка не обновляется. Я проверил в vue devtools, чтоrowData
опора обновляется. Документация ag-grid предполагает, что компонент должен реагировать на изменение. Есть идеи, что я делаю неправильно?
2 ответа
пытаться :
:row-data="Array.from(rowData)"
или
:row-data="[...rowData]"
Ах-ха. Наконец-то понял это, разместив здесь, если это поможет кому-то еще.
Похоже, моя проблема заключалась в привязке обоих и одновременно. Все работало нормально , за исключением обновления, когда оно было изменено. Я предполагаю, что это потому, что у параметров сетки были свои собственные
rowData
свойство, а оболочка ag-grid использовала данные из одной копии и обнаруживала изменения в другой (или что-то в этом роде).
я заменил
gridOptions
связывание с
columnDefs
привязка (в данном случае единственные параметры, которые мне нужно было установить), и все заработало именно так, как должно.