Kendo ui 剑道UI树视图:仅添加视图中不存在的节点

Kendo ui 剑道UI树视图:仅添加视图中不存在的节点,kendo-ui,treeview,kendo-asp.net-mvc,kendo-treeview,Kendo Ui,Treeview,Kendo Asp.net Mvc,Kendo Treeview,我在一个页面上有一个树状视图,它从一个组合框和一个多选框中获取数据。组合框包含每个成分的名称,multiselect包含可能的数量类型,然后将这些类型用作其所有子节点的名称 这棵树看起来像这样: 成分1 100mg 200mg 成分2 50毫克 100mg 除了我可以添加两次相同的值之外,一切都正常,因为我无法验证节点是否已经存在 下面是我用来添加新元素的函数: var addElement = function () { var treeview = $("#ingred

我在一个页面上有一个树状视图,它从一个组合框和一个多选框中获取数据。组合框包含每个成分的名称,multiselect包含可能的数量类型,然后将这些类型用作其所有子节点的名称

这棵树看起来像这样:

  • 成分1
    • 100mg
    • 200mg
  • 成分2
    • 50毫克
    • 100mg
除了我可以添加两次相同的值之外,一切都正常,因为我无法验证节点是否已经存在

下面是我用来添加新元素的函数:

var addElement = function () {

    var treeview = $("#ingredientTree").data("kendoTreeView");
    var multiselect = $("#ingredientAmount").data("kendoMultiSelect");
    var ingredientToAdd= $("#ingredient").val();

    // I allways get an empty array at this point.
    var exinstingIngredient= treeview.findByText(ingredientToAdd);

    var children = new Array();
    var amount = multiselect.value();

    for (var j = 0; j < amount.length; j++) {

        children.push({ text: amount[j] });
    }

    // it allways adds the items because the length is allways 0
    if (exinstingIngredient.length === 0) {
        treeview.append({
            text: ingredientToAdd,
            items: children
        });
    }
}
这是成分的来源,它只处理普通字符串:

@(Html.Kendo().ComboBox()
     .Name("ingredient")
     .DataSource(source => source.Read(r => r.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "InternationalIngredients" }))))
     .Events(events => events.Change("onIngredientChanged"))
)
以下是金额的来源,用于处理字符串:

@(Html.Kendo().MultiSelect()
   .Name("ingredientAmount")
   .DataSource(source => source.Read(read => read.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "InternationalIngredientAmount" })).Data("getIngredient")).ServerFiltering(true)))
此函数用于确定服务调用的选定成分:

function getIngredient() {
    return { ingredient: $("#ingredient").val() }
}

我现在已经找到了问题的原因。findByText似乎在检查类为“k-in”的节点的内容。不幸的是,当您添加所述模板时,此内容会被修改。因此,如果你想找到一个带有模板的元素,你应该使用findById,或者你可以用jQuery来定义你的模板。

你能发布treeview和datasource代码吗?
function getIngredient() {
    return { ingredient: $("#ingredient").val() }
}