Maxim
Maxim

Reputation: 4214

JsTree custom contextmenu in TypeScript

I try to use jstree control in my TypeScript code for an angularjs application. I use jstree typings and jstree.directive to show a tree. Everything works to the point when I need to handle menu item click and call for the base method. Inside of my action there is no "this" (contextmenu) scope. Any suggestions?

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);
                  }
                }
              };
            }
          }
        });
}

Somewhere inside of a method.

Custom context menu item action

Upvotes: 0

Views: 1255

Answers (1)

vakata
vakata

Reputation: 3886

this is not an instance - take a look at the original function to see how to obtain an instance: https://github.com/vakata/jstree/blob/master/src/jstree.contextmenu.js#L84

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

Upvotes: 1

Related Questions