2016-10-19 12 views
1

liタグ内にアンカータグを追加しようとしましたが、次のエラーが発生していました。 jsTreeが自動的にliタグの下にアンカータグを追加しているため、アンカー内にアンカーを配置していると仮定しています。ここでjsTreeノードのアンカータグでエラーが発生しました

angular.js:13920TypeError: Cannot read property 'childNodes' of undefined

マークアップです:

<div id="jstree_dbs_div"> 
    <ul> 
     {% for type in types %} 
      <li data-jstree='{"checkbox_disabled":true}'> 
       {{ type['parent']['text'] }} <span><a href="#">edit</a></span> 
      </li> 
     {% endfor %} 
    </ul> 
</div> 

私はそのアンカータグを削除した場合、それは(すなわちエラーなし)正常に動作しません。ここで

がjsTreeの設定です:

$jsTree.jstree({ 
    "core": { 
     multiple: false, 
    }, 
    "conditionalselect": function (node, event) { 
     return false; 
    }, 
    "plugins" : [ "wholerow", "checkbox", "conditionalselect" ], 
    "checkbox": { cascade: "", three_state: false }, 
}).on("ready.jstree", function() { 
    $jsTree.jstree('open_all'); 
}).on("select_node.jstree", function (e, data) { 
    var href = data.node.a_attr.href; 
    document.location.href = href; 
}); 

答えて

1

がエラーを修正しているようです。私はまたいくつかのことを追加しました(これは元の問題とは関係ありません)。

setTimeout(function(){ 
    $jsTree = $('#jstree_dbs_div'); 

    $jsTree.jstree({ 
     "core": { 
      multiple: false, 
     }, 
     "conditionalselect": function (node, event) { 
      var href = event.target.href; 
      document.location.href = href; 

      return false; 
     }, 
     "plugins" : [ "wholerow", "checkbox", "conditionalselect" ], 
     "checkbox": { cascade: "", three_state: false }, 
    }).on("ready.jstree", function() { 
     $jsTree.jstree('open_all'); 
    }); 
}, 0); 
0

私は限り、あなたがjsTreeノード内のマークアップを制御することができますように、この機能を追加することで問題が表示されません。 jsTreeで埋め込みリンクを取得できない場合でも、次のように通常のjavascriptを使用してアクセスできます。また、デモ-もチェックしてください。しかし、Angularではありません。イベントハンドラで

{ "id": ..., 
    "parent": ..., 
    "text": "Text before link<a class='link' href='www.google.com'>google.com</a>" 
} 

、その後::ツリーノードの設定で

タイムアウトで私jsTreeの設定をラッピング

.on("select_node.jstree", function (e, data) { 
    var href = $(data.event.currentTarget).find('.link').attr('href'); 
    document.location.href = href; 
}); 
+0

JSONではなくマークアップ(例のように)でツリーを作成してレンダリングする例を教えてください。 – xil3

+0

これは動作しませんので、スパンをリンクとして使用してください - https://fiddle.jshell.net/ermakovnikolay/abq5b274/ –

+0

元々、ノード内のスパン内にアンカーがラップされていました。それはうまく表示するために働いたが、まだそのエラーを生成しました。投稿した回答を確認してください。ハックのようなものだが、うまくいく。 – xil3

関連する問題