无法动态 add/delete 元素到 jstree

Unable to dynamically add/delete elements to jstree

我搜索了该站点,根据各种较早的答案,我确保 'check-callback' 设置为 'true'。我还尝试在检查回调中使用一个函数。我发现了一个非常简单的 jsfiddle,它展示了工作行为 [http://jsfiddle.net/3q9Ma/223/],但并不真正理解对 jstree.create_node(); 的调用有何不同;成功警报没有触发,所以显然出了点问题。根据 jsfiddle 文档,我还尝试将“#”更改为 null,但无济于事。

我创建了一个 jsfiddle,在这里展示了非工作行为:https://jsfiddle.net/z0tjc91v/

基本上,我有一个 jstree,想使用文本框的内容通过单击按钮来添加或删除元素..

HTML:

<label for="drawerName">Current Drawer:</label>
<input type="text" id="drawerName">
<div id="btnDiv">

  <button id="newDrawerBtn" type="button" class="btn btn-success">
    <span class="glyphicon glyphicon-plus-sign pull-left"></span>New Drawer
  </button>

  <button id="deleteDrawerBtn" type="button" class="btn btn-danger">
    <span class="glyphicon glyphicon-remove-sign pull-left"></span>Delete Drawer
  </button>
</div>
<div id="drawerTreeDiv">
</div>

Javascript:

$(function() {
  var currentFile;

  $('#drawerTreeDiv')
    .on('changed.jstree', function(e, data) {

      currentFile = data.instance.get_node(data.selected[0]).text;
      $('#drawerName').val(currentFile);
    })
    .jstree({
      'core': {
        'multiple': false,
        'check-callback': true,
        'data': [{
          'id': 'path/to/foo',
          'text': 'foo'
        }, {
          'id': 'path/to/bar',
          'text': 'bar'
        }]
      }
    });
  $('#newDrawerBtn').on('click', function() {
    let filename = $('#drawerName').val();
    let pathname = '/path/to/' + filename;
    var newNodeJson = {
      'id': pathname,
      'text': filename

    };
    $('#drawerTreeDiv').jstree().create_node('#', newNodeJson, 'last', function() {
      alert("added");
    });

    //$('#drawerTreeDiv').jstree().refresh();
  });

  $('#deleteDrawerButton').on('click', function() {
    let filename = $('#drawerName').val();
    let pathname = '/path/to/' + filename;
    var node = $('#drawerTreeDiv').jstree().get_node(pathname);

    $('#drawerTreeDiv').jstree().delete_node(node);
    $('#drawerTreeDiv').jstree().refresh();

  });

我发现了问题。我将 check-callback 设置为 true,而不是 check_callback。当我进行更改时,它起作用了。