Kendo ui 如何将剑道菜单绑定到远程数据源?
下面是我的代码Kendo ui 如何将剑道菜单绑定到远程数据源?,kendo-ui,datasource,bind,kendo-menu,Kendo Ui,Datasource,Bind,Kendo Menu,下面是我的代码 $("#lhsPanelBar").kendoMenu({ orientation: 'vertical', dataSource: { type: 'json', transport: { read: "http://localhost:3549/api/LHSMenu" } }, }); 但控制器上并没有服
$("#lhsPanelBar").kendoMenu({
orientation: 'vertical',
dataSource:
{
type: 'json',
transport: {
read: "http://localhost:3549/api/LHSMenu"
}
},
});
但控制器上并没有服务器点击,菜单显示为“未定义”
控制器代码
public class LHSMenuController : ApiController
{
private IRepo repo;
public LHSMenuController()
{
repo = new Repository();
}
[HttpGet]
public IEnumerable<LHSMenu> GetLHSMenu()
{
return this.repo.Menu;
}
}
公共类LHSMenuController:ApiController
{
私人IRepo回购;
公共LHSMenuController()
{
repo=新存储库();
}
[HttpGet]
公共IEnumerable GetLHSMenu()
{
返回此.repo.Menu;
}
}
您应该以json友好格式为菜单返回结果。试试这个:
[HttpGet]
public IEnumerable<LHSMenu> GetLHSMenu()
{
return Json(this.repo.Menu,JsonBehavoir.AllowGet);
}
[HttpGet]
公共IEnumerable GetLHSMenu()
{
返回Json(this.repo.Menu,JsonBehavoir.AllowGet);
}
剑道UI菜单暂时不支持绑定到远程数据源。剑道菜单无法直接绑定到远程数据源,但您可以使用数据源的更改方法并使用此功能创建菜单,请尝试以下操作:
var menuDataSource = new kendo.data.DataSource({
transport: {
read: {
url: "/app/test/menuItems",
dataType: "json"
}
},
change: function() {
var dataMenu = this.data();
console.log("from change: " + dataMenu.length);
for (var indexMenuDataSource = 0; indexMenuDataSource < dataMenu.length; indexMenuDataSource++) {
var objectToPut = {};
var data = dataMenu[indexMenuDataSource];
objectToPut.text = data.text;
objectToPut.url = data.url;
objectToPut.cssClass = data.cssClass;
objectToPut.imageUrl = data.imageUrl;
if(data.items.length > 0){
objectToPut.items = [];
for(var indexSubItem = 0; indexSubItem < data.items.length; indexSubItem++){
var subItem = {};
subItem.text = data.text;
subItem.url = data.url;
subItem.cssClass = data.cssClass;
subItem.imageUrl = data.imageUrl;
objectToPut.items.push(subItem);
}
}
menu.insertAfter(objectToPut, menu.element.children("li:last"));
}
}
});
var menu = $("#menuTest").kendoMenu().data("kendoMenu");
menuDataSource.read(); //Will launch the change function
var menuDataSource=new kendo.data.DataSource({
运输:{
阅读:{
url:“/app/test/menuItems”,
数据类型:“json”
}
},
更改:函数(){
var dataMenu=this.data();
log(“来自更改:+dataMenu.length”);
对于(var indexmenudasource=0;indexmenudasource0){
objectToPut.items=[];
对于(var indexSubItem=0;indexSubItem
注意:这是一个草稿,创建另一个函数来迭代sub>sub>sub项。你能分享控制器的代码吗?答案很好,如果菜单返回零项,你有错误处理吗?我正试图通过这种方式解决问题,但并不是很成功。