2013-08-19 69 views
3

在kendo ui treeview中是否存在黑客攻擊,因此當用戶單擊根節點時,它將觸發select方法,就像其他分支節點一樣。Kendo UI TreeView可選擇的根目錄

當前沒有可以爲此行爲找到的選項,並且僅爲分支觸發了select方法。

var areaDropDownTreeView = $(tvElement).kendoExtDropDownTreeView({ 
     treeview: { 
      template: kendo.template($(tvTemplate).html()), 
      dataSource: dataSource 
     } 
    }).data("kendoExtDropDownTreeView"); 

    var $dropdownRootElem = $(areaDropDownTreeView.dropDownList().element).closest("span.k-dropdown"); 
    var $treeviewRootElem = $(areaDropDownTreeView.treeview().element).closest("div.k-treeview"); 

    // Unbind default select event. 
    areaDropDownTreeView.treeview().unbind("select"); 
    // Bind new select event. 
    areaDropDownTreeView.treeview().bind("select", function (e) { 
     // want to do something here for every node including the root, but the root is not triggering select, only the branches are 
    }); 
+0

謝謝了問題 – Zan

回答

2

我會通過使啓動一定要正確建立您的TreeView:

$("#myTreeView").kendoTreeView({ ...settings go here... }); 

這裏是選擇樹的所有節點上工作的一個例子:

http://jsbin.com/edamuj/1260/edit?html,output

OnSelect 任何節點在t ree,包括一個根節點。我猜想它與你綁定的方式有關。如果你想控制動作(也許你並不總是想讓onSelect做一些事情),這可能有助於管理這些決定選擇事件功能本身。 這是推薦的方法。如果您不遵循kendo文檔中的推薦方法列表 - 預計會出現意想不到的結果。

相反,設定自己活動的樹狀聲明的內部結合(這是一個簡單的例子):

$("#treeview").kendoTreeView({ 
        select: onSelect, 
       }); 
      }); 

然後按正常方式處理事件,像這樣:

 $(document).ready(function() { 
       function onSelect(e) { 
        alert("selection event triggered"); 
       } 
     } 
+0

我確實構建了我的TreeView。 OnSelect實際上是爲每個節點觸發的,「除了」「根」之外。如果你不明白根是什麼,那麼根就是啓動樹的單個節點。在這裏閱讀更多的這個話題http://en.wikipedia.org/wiki/Tree_structure –

+0

我上面描述的實現適用於我們的應用程序樹中的任何節點。你使用的是哪個版本的劍道?您可以嘗試使用preventDefault()來禁用樹視圖的默認行爲,但這意味着該事件已經在觸發。如果您發佈的樹視圖的JSBin無法正常工作 - 這將使診斷變得更容易。 – Ray