kendo-ui - 如何将kendo-menu绑定(bind)到远程数据源?

标签 kendo-ui datasource bind kendo-menu

下面是我的代码

$("#lhsPanelBar").kendoMenu({
    orientation: 'vertical',
    dataSource:
        {
            type: 'json',
            transport:  {
                    read: "http://localhost:3549/api/LHSMenu"
                }
        },
});

但 Controller 上没有服务器命中,菜单显示为“未定义”。

Controller 代码

public class LHSMenuController : ApiController
{
    private IRepo repo;
    public LHSMenuController()
    {
        repo = new Repository();
    }

    [HttpGet]
    public IEnumerable<LHSMenu> GetLHSMenu()
    {
        return this.repo.Menu;
    }
}

最佳答案

剑道菜单无法直接执行此操作,但您可以使用数据源的更改方法并从此函数创建菜单,尝试以下操作:

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

注意:这是一个草稿,创建另一个函数来迭代 sub > sub > sub 项。

关于kendo-ui - 如何将kendo-menu绑定(bind)到远程数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090124/

相关文章:

javascript - 只是页面工作中的 ng-bind-html 之一

javascript - Kendo-ui、调度程序、时间线月 View 、workDayStart 和 workDayEnd 错误

ios - 无效更新 : invalid number of rows in section 0 UITableView

javascript - kendo ui 窗口没有正确居中

ios - 将数据源分离到 Swift 中的另一个类

java - 如何在 Tomcat 6 中配置全局 JNDI 数据源?

c++ - 在嵌套的 boost 绑定(bind)中使用模板函数

c - 如何在 C 中创建 UDP 服务器?

javascript - KendoUI 网格取消选中/选定的行

kendo-ui - 剑道 DropDownListFor() 与 ASP.NET-MVC