2012-11-28 35 views
2

之前,我的大脑爆炸需要一些帮助.. 不能似乎明白了什么即时做错了KendoUI自动完成与外部数据源

有一个很简单的自动完成。

$(document).ready(function() { 

    var data =new kendo.data.DataSource({ 
     serverFiltering: true, 
     transport: { 
      read: "data/output.txt" 
     } 
    }); 
    $("#input").kendoAutoComplete({ 
      dataSource: data 
     }); 
     }); 

但无论我多么努力地尝试我没有得到我想要的结果,只是一个字母垂直的列表..? 我不知道如何外部文件应该看起来?因为现在它只是是:

"value1", 
"value2", 
"value3" 
+1

是什么output.txt中包含哪些内容?另外为什么你启用serverFiltering?启用它意味着您将实现过滤服务器端,这对于一个vanilla文本文件是不可能的。 –

回答

0

发生这种情况,因为你的数据源认为,根源是它是文本文档的内容的字符串,并将其创建的每个字符串中的字符中的一个项目。

可以使用本地绑定,如here

或者创建一个服务/动作,它将为您提供适当的json,odata或其他任何数据。包含符号的文本文件不是一个好主意。

0

您返回数据的方式并不是最方便的。你应该尝试将其返回的JSON数组:

[ 
    "text1", 
    "text2", 
    "text3" 
] 

但是,KendoUI开发商真的是好人,让你在DataSource.schema在那里你可以转换格式定义parse功能。

尝试使用DataSource定义如下:

var data = new kendo.data.DataSource({ 
    serverFiltering:true, 
    transport  :{ 
     read:"data/output.txt" 
    }, 
    schema   :{ 
     parse:function (a) { 
      return JSON.parse("[" + a + "]"); 
     } 
    } 
});