2016-05-24 8 views
0

私は剣道のUIでAureliaを使用しています。コンテキストメニューを試しました。私は選択から関数を呼び出す際に問題を抱えています。そのメソッドを見つけることができません。何か案が? selectイベント内で呼び出されるとコンテキストメニューの選択イベントを処理します

$("#menu").kendoContextMenu({     
    orientation: orientation,     
    target: "#listview-context-menu",     
    filter: ".product",     
    animation: {      
     open: { effects: "fadeIn" },      
     duration: 500 
    },     
    select: function (e) { 
     this.doAction(); // this function is not being recognized. 
    } 
}); 
+0

古典的な 'function(..)'の代わりに 'e => this.doAction()'を使ってみてください。あなたは "間違った"この種類の問題を避けます –

答えて

0

は、thisキーワードがkendoContextMenuオブジェクトを参照します。剣道ウィジェットにはdoAction関数がなく、提供したコードは剣道クラスを拡張してそのような関数を含むことはありません。

あなたは、元thisコンテキスト(のdoActionは、このレベルで定義されたと仮定して)への参照を保持した場合、あなたはkendoContextMenuを初期化する前にコピーする必要があります。しかし

var originalThis = this; 
$("#menu").kendoContextMenu({     
    orientation: orientation,     
    target: "#listview-context-menu",     
    filter: ".product",     
    animation: {      
     open: { effects: "fadeIn" },      
     duration: 500 
    },     
    select: function (e) { 
     originalThis.doAction(); 
    } 
}); 

、あなたがしたい場合はdoActionは、すべてのkendoContextMenuオブジェクトのローミングサービスを作る場合、あなたはまた、剣道のプロトタイプを拡張できること

$("#menu").kendoContextMenu({     
    //... 
}); 
$("#menu").data("kendoContextMenu").doAction = function() { 
    alert("Action done"); 
} 

注:kendoContextMenuの特定のインスタンスを拡張し、あなたはこのようにそれを行うことができます。

関連する問題