gpt4 book ai didi

kendo-ui - 剑道自动完成不显示

转载 作者:行者123 更新时间:2023-12-01 10:54:07 26 4
gpt4 key购买 nike

我有一个用于自动完成的自定义编辑器。 Web 服务被调用并返回数据。但是,编辑器中没有任何内容。我在 schema.parse() 中放置了一个断点,但它从未命中。我错过了什么?

function myAutoCompleteEditor(container, options) {
$('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoAutoComplete({
autoBind: false,
suggest: true,
delay: 500,
dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: function (opt) {
$.getJSON("/myWebService/GetData");
},
},
schema: {
errors: function (e) {
return e;
},
parse: function (data) {
return data.Name;
}
}
})
});
}

更新:

通过 JSON.stringfy(data) 显示的数据是这样的:

[{"Address":"123 1st St.","ID":"1","Name":"David"},{"Address":"234 2nd St.","ID":"2","姓名":"史密斯"}]

更新 2:

代码现在看起来像这样:

function myAutoCompleteEditor(container, options) {
$('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoAutoComplete({
dataValueField: "Name",
autoBind: false,
suggest: true,
delay: 500,
dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: function (opt) {
return "/myWebServices/GetData/" + opt.filter.filters[0].value;
},
dataType: "json"
}
},
schema: {
errors: function (e) {
return e;
}
},
data: function (response) {
return $.parseJSON(response);
}
})
});
}

更新 3:

最终通过删除模式和数据部分使其正常工作。接受 OnaBai 的回答,因为他确实为我指明了正确的方向。最终代码如下所示:

function myAutoCompleteEditor(container, options) {
$('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoAutoComplete({
dataValueField: "Name",
autoBind: false,
suggest: true,
delay: 500,
dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: function (opt) {
return "/myWebServices/GetData/" + opt.filter.filters[0].value;
},
dataType: "json"
}
}
})
});
}

最佳答案

问题是 read 的执行功能。此函数应使用您要返回的数据调用 opt.success。您正在做的是从 URL 检索数据,但您没有返回此类数据。

但在您的情况下,您似乎没有做任何特别的事情(不需要定义函数)。所以你可以将它定义为一个 Object 并且只定义 transport.read.url

您可以使用:

dataSource: new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url : "/myWebService/GetData"
}
},
schema: {
parse: function (data) {
return data.Name;
}
}
})

编辑:要在服务器返回数据时使用数据并且不必解析,您可以使用:

function myAutoCompleteEditor(container, options) {
$('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>').appendTo(container).kendoAutoComplete({
autoBind : false,
suggest : true,
delay : 500,
dataValueField: "Name",
dataSource : new kendo.data.DataSource({
transport: {
read: {
url : "/myWebService/GetData"
}
}
})
});
}

诀窍是定义 dataValueField,它定义返回数组的哪个值是 autocomplete 的值。

关于kendo-ui - 剑道自动完成不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com