Vuex Как привязать магазин к KendoUi-Vue Grid в транспорте читать
Я пытаюсь связать данные в интерфейсе Kendo с данными из получателей Vuex.
Я попробовал следующее, но не повезло. Пожалуйста, помогите, где я пропускаю что-то на Vuex или на кендо.
Расширения кендо:
<kendo-grid :data-source="kendoDataSource">
</kendo-grid>
Компоненты:
computed: {
customers() {
return this.$store.getters.customers;
}
},
data() {
return {
kendoDataSource: {
schema: {
data: function(response) {
return response;
},
model: {
id: "CustomerID",
fields: {
CompanyName: { type: "string" },
}
}
},
transport: {
read: function(options) {
options.success(this.customers);
}
}
}
};
Я получаю ошибку. TypeError: Cannot read property 'length' of undefined
Когда я попытался отладить this.customers
в транспортировке кендо объекта this.customers
всегда ноль.
Данные в формате, как показано ниже:
[
{
"CustomerID": "ALFKI",
"CompanyName": "Alfreds Futterkiste"
},
{
"CustomerID": "ANATR",
"CompanyName": "Ana Trujillo Emparedados y helados"
}
]
Store.js
export default {
state: {
customers: JSON.parse(JSON.stringify(customers))
},
getters: {
customers(state) {
return state.customers;
}
}
};
Когда я пытаюсь связать данные непосредственно на options.success(this.customers);
Как показано ниже, сетка успешно заполняется данными. Но пока я пытался связать, используя getters
есть ошибка.
TypeError: Cannot read property 'length' of undefined
options.success([
{
"CustomerID": "ALFKI",
"CompanyName": "Alfreds Futterkiste",
},
{
"CustomerID": "ANATR",
"CompanyName": "Ana Trujillo Emparedados y helados",
}
]);
1 ответ
Решение
Я думаю, что вы хотите использовать вычисляемые свойства вместо данных.
computed: {
customers() {
return this.$store.getters.customers;
},
kendoDataSource() {
const customers = this.customers
return {
schema: {
data: function(response) {
return response;
},
model: {
id: "CustomerID",
fields: {
CompanyName: { type: "string" },
}
}
},
transport: {
read: function(options) {
options.success(customers);
}
}
}
}
}
}