我在使用jquery关于点击功能的类中调用私有方法时遇到了一些问题。当我加载我的网络应用程序时,我得到以下内容:
Uncaught TypeError: _this.changeView is not a function
这就是我的课程。
module web {
export class Menu {
constructor(evt) {
// text
}
private init() : void {
this.menu = $(".application-menu a");
this.menu.on("click", (evt) => this.changeView(evt) );
}
private changeView(evt : any) : void {
console.log("do something");
}
}
}
如何使用typescript方法作为回调来调用jquery的点击功能?
答案 0 :(得分:0)
这对我有用......虽然我做了一些调整和补充测试,但基本原则没有改变。
我不确定你打算在哪里调用init
方法...要么你在其他地方调用它(在这种情况下它不能是私有的),或者你打算在课堂上调用它,但你没有在你的问题中显示。为了演示的目的,我把它公之于众。
module web {
export class Menu {
private menu: JQuery;
constructor() {
// text
}
init() : void {
this.menu = $(".application-menu a");
this.menu.on("click", (evt) => this.changeView(evt) );
}
private changeView(evt : any) : void {
console.log("do something");
}
}
}
var menu = new web.Menu();
menu.init();
这将编译为以下JavaScript ...
var web;
(function (web) {
var Menu = (function () {
function Menu() {
// text
}
Menu.prototype.init = function () {
var _this = this;
this.menu = $(".application-menu a");
this.menu.on("click", function (evt) { return _this.changeView(evt); });
};
Menu.prototype.changeView = function (evt) {
console.log("do something");
};
return Menu;
})();
web.Menu = Menu;
})(web || (web = {}));
var menu = new web.Menu();
menu.init();
执行时,会导致“做某事”为output to the console。