Javascript 具有动态模式的Treeview的Kendo UI HierarchycalDataSource

Javascript 具有动态模式的Treeview的Kendo UI HierarchycalDataSource,javascript,kendo-ui,kendo-treeview,Javascript,Kendo Ui,Kendo Treeview,由于HierarchycalDataSource,我正在尝试显示剑道树视图。 这是一个简单的地区、国家、城市等级,但困难在于我们有3个可能的地区级别,国家可以出现在第二级或第三级 基本上, -第一级区域仅包含其他区域 -第二级区域包含其他区域或国家 -第三级区域仅包含国家 以下是我的模式: var portsSchema = { schema: { data: "PortList", model: {

由于HierarchycalDataSource,我正在尝试显示剑道树视图。 这是一个简单的地区、国家、城市等级,但困难在于我们有3个可能的地区级别,国家可以出现在第二级或第三级

基本上, -第一级区域仅包含其他区域 -第二级区域包含其他区域或国家 -第三级区域仅包含国家

以下是我的模式:

 var portsSchema = {
            schema: {
                data: "PortList",
                model: {
                    id: "Code"
                }
            }
        };

        var countrySchema = {
            schema: {
                data: "CountryList",
                model: {
                    id: "Code",
                    children: portsSchema
                }
            }
        };

        var regionCountrySchema = {
            schema: {
                data: "RegionList",
                model: {
                    id: "id",
                    children: countrySchema
                }
            }
        };

        var regionSchema = {
            schema: {
                data: "RegionList",
                model: {
                    id: "id",
                    children: regionCountrySchema
                }
            }
        };
根据该地区是否有国家这一事实,我想具体说明一种特定类型的儿童(regionSchema或regionCountrySchema)

返回{children:regionSchema}或{children:regionCountrySchema}会触发js剑道错误

有什么办法可以做到这一点吗?非常感谢。 下面是JSON数据示例

[
{
“Id”:1,
“名称”:“中东和红海”,
“区域列表”:[
{
“Id”:12,
“名称”:“中东”,
“区域列表”:[
{
“Id”:45,
“名称”:“M.EAST”,
“区域列表”:[
],
“国家名单”:[
{
“Id”:12007,
“代码”:“AE”,
“名称”:“阿联酋”,
“端口列表”:[
{
“Id”:6005,
“代码”:“AEJEA”,
“姓名”:“杰贝尔·阿里”
},
{
“Id”:16014,
“代码”:“AEAJM”,
“姓名”:“AJMAN”
},
{
“Id”:16015,
“代码”:“AEAUH”,
“名称”:“阿布扎比”
},
{
“Id”:15109,
“代码”:“AEKLF”,
“名称”:“KHOR AL-FAKKAN”
},
{
“Id”:15001,
“代码”:“AERKT”,
“名称”:“哈伊马角”
},
{
“Id”:16018,
“代码”:“AESHJ”,
“姓名”:“沙迦”
},
{
“Id”:14863,
“代码”:“AEQIW”,
“姓名”:“UMM AL-QAIWAIN”
},
{
“Id”:15647,
“代码”:“AEFJR”,
“名称”:“AL-FUJAYRAH”
}
]
},
{
“Id”:12018,
“代码”:“OM”,
“姓名”:“阿曼”,
“端口列表”:[
{
“Id”:6011,
“代码”:“OMSLL”,
“姓名”:“萨拉拉”
},
{
“Id”:16218,
“代码”:“OMSOH”,
“名称”:“苏哈尔”
}
]
},
{
“Id”:10069,
“代码”:“BH”,
“姓名”:“巴林”,
“端口列表”:[
{
“Id”:15345,
“代码”:“BHKBS”,
“姓名”:“巴林”
}
]
},
{
“Id”:62292,
“代码”:“IQ”,
“名称”:“伊拉克”,
“端口列表”:[
{
“Id”:15383,
“代码”:“IQBSR”,
“名称”:“巴士拉”
},
{
“Id”:14673,
“代码”:“iqqr”,
“名称”:“UMM QASR PT”
}
]
},
{
“Id”:62291,
“代码”:“IR”,
“名称”:“伊朗伊斯兰共和国”,
“端口列表”:[
{
“Id”:15250,
“代码”:“IRBKM”,
“名称”:“班达尔·霍梅尼”
},
{
“Id”:15249,
“代码”:“IRBND”,
“姓名”:“班达尔阿巴斯”
},
{
“Id”:14973,
“代码”:“IRBUZ”,
“名称”:“布什尔”
},
{
“Id”:14671,
“代码”:“IRKHO”,
“名称”:“KHORRAMSHAHR”
}
]
},
{
“Id”:62306,
“代码”:“KW”,
“名称”:“科威特”,
“端口列表”:[
{
“Id”:15810,
“代码”:“KWSAA”,
“名称”:“SHUAIBA”
},
{
“Id”:15811,
“代码”:“KWSWK”,
“名称”:“SHUWAIKH”
}
]
},
{
“Id”:12002,
“代码”:“SA”,
“名称”:“沙特阿拉伯”,
“端口列表”:[
{
“Id”:15039,
“代码”:“SAJUB”,
“姓名”:“朱拜勒”
},
{
“Id”:16147,
“代码”:“SADMM”,
“名称”:“AD DAMMAM”
}
]
},
{
“Id”:62364,
“代码”:“QA”,
“名称”:“卡塔尔”,
“端口列表”:[
{
“Id”:15739,
“代码”:“QADOH”,
“名称”:“多哈”
},
{
“Id”:14795,
“代码”:“QAMES”,
var tvDataSource = new kendo.data.HierarchicalDataSource({
            data: regions,
            schema: {
                model: function (data) {

                    **how to return the right children schema ?**
                }
            }
        });