2015-09-30 29 views
0

我在angularjs中使用jsTree並在「ready」中使用「select_node」。此方法返回false。在代碼調試時,觀察到tree.instance._model.data沒有該節點,所以this.get_node(obj);返回false。 (下面是代碼片段)jsTree「select_node」返回false

select_node : function (obj, supress_event, prevent_open, e) { 
     var dom, t1, t2, th; 
     if($.isArray(obj)) { 
      obj = obj.slice(); 
      for(t1 = 0, t2 = obj.length; t1 < t2; t1++) { 
       this.select_node(obj[t1], supress_event, prevent_open, e); 
      } 
      return true; 
     } 
     obj = this.get_node(obj); //here it returns false 
     if(!obj || obj.id === '#') { 
      return false; 
     } 
} 

我不知道爲什麼tree.instance._model.data不當時有數據,因爲它通常當我刷新瀏覽器。

任何幫助?以下是我的代碼片段。

me.onTreeReady = function (eve, tree) { 
    tree.instance.deselect_all(); 
    tree.instance.refresh(true, true); 
    var response = tree.instance.select_node(defaultNode); 
} 

回答

0

這必須是某種與您的角度指令提供程序相關的競爭條件。

0

此問題已解決。我爲html添加了「id」,所以當使用相同的id創建多個實例時,會出現上述錯誤。通過刪除此ID來解決問題。

舊代碼

<div class="row no-margin" cg-busy="ctrl.promise"> 
    <div class="bg-white"> 
     <div **id="treeView"** js-tree="ctrl.treeConfig" 
      should-apply="ctrl.applyModelChanges()" 
      ng-model="ctrl.treeData" 
      tree="ctrl.treeInstance" 
      tree- events="ready:ctrl.onTreeReadyEvent;select_node:ctrl.onNodeSelectEvent;deselect_node:ctrl.onNodeDeselectEvent"> 
     </div> 
    </div> 
</div> 

新代碼:

<div class="row no-margin" cg-busy="ctrl.promise"> 
    <div class="bg-white"> 
     <div js-tree="ctrl.treeConfig" 
      should-apply="ctrl.applyModelChanges()" 
      ng-model="ctrl.treeData" 
      tree="ctrl.treeInstance" 
      tree- events="ready:ctrl.onTreeReadyEvent;select_node:ctrl.onNodeSelectEvent;deselect_node:ctrl.onNodeDeselectEvent"> 
     </div> 
    </div> 
</div>