javascript - 两种方式数据绑定在 Kendo UI 上不起作用
问题描述
我有一个kendo-dropdownlist
从 API 调用中获取数据的组件。我已经使用该kendo-datasource
组件实现了这一点,并且一切正常。但是我现在有多个kendo-dropdownlist
组件,而不是为每个kendo-dropdownlist
组件进行 API 调用,我应该只进行一次 API 调用,并且所有kendo-dropdownlist
组件都应该从同一个 JSON 响应中获取它的数据。这kendo-dropdownlist
绑定到一个名为“currentData”的属性。
所以我现在正在做的是我声明一个kendo-dropdownlist
组件但没有给它任何data-source-ref
. 相反,我将它的data-source
属性设置为一个名为“source”的本地数据属性,它是一个 JSON 数组。
然后在mount
生命周期钩子中,我进行 API 调用并将响应设置为“源”数据属性。在此之后,下拉项目被填充kendo-dropdownlist
但未选择“currentData”。
组件模板:
<kendo-dropdownlist
v-model="currentData"
:data-source="source.filter(s => s.type == 'something')"
data-text-field="name"
data-value-field="Id"
></kendo-dropdownlist>
组件脚本:
export default {
name: "SomeComponent",
props: {
prop1: String
},
data() {
return {
currentData: this.prop1
source: []
};
},
mounted: async function() {
await this.setDataSource();
},
methods: {
async setDataSource() {
const formDTO = await SERVICE.getDataSource();
this.source= formDTO.stakeholders;
}
}
};
我可以确认源数组中的一个对象的 Id 属性等于this.prop1
.
解决方案
我可以在你的mounted
生命周期钩子中看到,你已经调用了setDataSource
函数。但是您错过了对该功能的引用。
如果你使用它应该被调用
await this.setDataSource()
代替
await setDataSource()
您可以单击任何数据,相应的数据在<p></p>
标签下可见。
更新的 StackBlitz 链接:这是工作中的Stackblitz
希望这可以帮助!