Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用c字典自动完成_Javascript_C#_Asp.net Mvc_Kendo Ui_Telerik - Fatal编程技术网

Javascript 用c字典自动完成

Javascript 用c字典自动完成,javascript,c#,asp.net-mvc,kendo-ui,telerik,Javascript,C#,Asp.net Mvc,Kendo Ui,Telerik,我使用的是KendoUITelerik,我想添加一个数据源,它是一个从c到js解析为对象的字典。如何获取对象值并将其添加到自动完成输入?我有以下代码: var availableCategories = JSON.parse(@(Html.Raw(Json.Encode(@Model.AvailableCategoriesJSON)))); $(document).ready(function () { var data=availableCategories; $("#categorie

我使用的是KendoUITelerik,我想添加一个数据源,它是一个从c到js解析为对象的字典。如何获取对象值并将其添加到自动完成输入?我有以下代码:

var availableCategories = JSON.parse(@(Html.Raw(Json.Encode(@Model.AvailableCategoriesJSON))));

$(document).ready(function () {

var data=availableCategories;

$("#categories").kendoAutoComplete({
        dataSource: data,
        filter: "startswith",
        placeholder: "Select category...",
        separator: ", "
    });
以及输入:

<input id="categories" />
如果我没弄错,您的availableCategories对象将如下所示:

[{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
 {"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}]
但是您需要告诉小部件它将使用哪个属性。因此,我建议您以友好方式创建另一个虚拟属性,例如文本:

然后添加此选项:

dataTextField: "text"
结果:

var data = [{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
            {"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}];

data.forEach(x => x.text = x[Object.keys(x)[0]]);

$("#categories").kendoAutoComplete({
      dataSource: data,
      filter: "startswith",
      placeholder: "Select category...",
      separator: ", ",
      dataTextField: "text",
      select: function(e) {
        console.log("Selected item", e.dataItem);
      }
});

如果viewmodel中有可用的类别,为什么要对JSON进行编码和解码?只需以数组语法输出。因为在我选择一个类别后,我会保存类别Id。从js对象很容易做到这一点。你有什么问题?什么不起作用?你能显示你的AvailableCategoriesJSON内容吗?AvailableCategoriesJSON是一个C字典,我正在转换成一个js对象,看起来像{Guid:string},我想使用这个对象作为自动完成输入的数据源
var data = [{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"},
            {"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}];

data.forEach(x => x.text = x[Object.keys(x)[0]]);

$("#categories").kendoAutoComplete({
      dataSource: data,
      filter: "startswith",
      placeholder: "Select category...",
      separator: ", ",
      dataTextField: "text",
      select: function(e) {
        console.log("Selected item", e.dataItem);
      }
});