TypeScript中的JsTree自定义上下文菜单

问题描述:

我尝试在我的TypeScript代码中为jQuery应用程序使用jstree控件。我使用jstree typings和jstree.directive来显示一棵树。当我需要处理菜单项点击并调用基本方法时,所有事情都能正常工作。在我的行动里面没有“this”(contextmenu)范围。有什么建议么?TypeScript中的JsTree自定义上下文菜单

class MapTreeViewController { 

    mapTreeView: JSTree; 

vm.mapTreeView = $('#jstree').jstree(
    { 
     'core': { 'data': items }, 
     'plugins': ['themes', 'ui', 'contextmenu'], 
      'contextmenu': { 
      'items': function(node:any) { 
       var vmNode = this; 
       return { 
       'rename': { // rename menu item 
        'label': 'Rename', 
        'action': function(obj) { 
        this.rename(obj); 
        } 
       } 
       }; 
      } 
      } 
     }); 
} 

某个方法的内部。

Custom context menu item action

+0

@Okazari,是错字是有,但“这个”反正为空并且没有用于空对象的方法。更进一步的“this”假设是一个contextmenu范围,它不是angular的视图$范围。 Angular的$范围没有“重命名”方法,但是“contextmenu”。 – Maxim

+0

我想我们需要更多的代码来进行调查。其实这可能与角度无关。 – Okazari

this是不是一个实例 - 看看原来的功能,以了解如何获得一个实例: https://github.com/vakata/jstree/blob/master/src/jstree.contextmenu.js#L84

"action" : function (data) { 
    var inst = $.jstree.reference(data.reference), 
    ... 
+0

这就是我如何结束,从那里打开你的源代码和使用的代码。还必须修复TypeScript的类型,编辑方法没有call_back函数参数。虽然编辑方法不适用于Chrome浏览器。输入折叠并且不可能看到我编辑的内容,这是我需要查看的一个区域,并且希望能够让您更改。谢谢伊万,在这棵树控制上真的非常出色。 – Maxim

+0

谢谢你的客气话。 'edit()'有一个回调参数,如果你需要的话 - 它最近被添加了。至于Chrome浏览器 - 我还没有注意到一个问题 - 当你有时间时在github上提出问题,以便我可以复制和修复。谢谢。 – vakata