2017-07-19 2 views
0
klicken

Ich "angular-ui-tree": "^2.22.5"

Fehler zu verwenden, wenn ich auf den Punkt Do something Menü klicken ..

TypeError: this.$state is undefined 

Wie kann ich gehe einen Verweis auf $state meiner Funktion ..

MyController:

export class MyController { 

    public treeMenuItems = [ 
    { 
     'handleClick': this.doSomething, 
     'name': 'Do something' 
    } 
    ]; 
    public treeMenuPopover = { 
    'items': this.treeMenuItems, 
    'placement': 'bottom', 
    'title': 'Actions' 
    }; 

    constructor(public $state: ng.ui.IStateService) {} 

    public doSomething() { 
    this.$state.go('my.state'); 
    } 
} 
MyController.$inject = ['$state']; 

Antwort

0

Sie können lesen, wie this in Javascript funktioniert here.

Für Ihren Code versuchen

export class MyController { 

    public treeMenuItems = [ 
    { 
     'handleClick': this.doSomething, 
     'name': 'Do something' 
    } 
    ]; 
    public treeMenuPopover = { 
    'items': this.treeMenuItems, 
    'placement': 'bottom', 
    'title': 'Actions' 
    }; 

    constructor(public $state: ng.ui.IStateService) { 
    this.doSomeThing = this.doSomething.bind(this); 
    } 

    doSomething() { 
    this.$state.go('my.state'); 
    } 
} 
MyController.$inject = ['$state']; 

diese Weise können Sie die korrekte diese die Funktion doSomething binden. Also, wann immer es heißt this wird konsistent sein.

+0

Fehler 'Name kann 'doSomething' nicht finden. Meinst du das Instanzmitglied 'this.doSomething'? '.. im Konstruktor. Und mit dem, was der Fehler vorschlägt, gibt mir den ursprünglichen Fehler – bobbyrne01

+0

ja richtig, mein schlechtes, habe ich die Frage aktualisiert. Oder Sie können versuchen, es aus der Klasse zu extrahieren. –

+0

"es extrahieren"? nicht sicher, was du meinst – bobbyrne01

Verwandte Themen