我正在尝试访问MyAccount
类中的私有方法,但它的错误为uncaught typeError: this.displayTabOnClick not a function
。我可以清楚地确认它是MyAccount
类中的私有方法,其他类似方法displayTabOnPageLoad
完美无缺。
以下是代码段:
MyAccount.ts文件
class MyAccount
{
private displayTabOnClick(thisObj: JQuery, e:Event, callback?:()=>any): void {
$(document).scrollTop(0);
e.preventDefault()
let hash = thisObj.prop('hash');
// Update the location hash
window.location.hash = hash;
// Add Selected class to the current click elem
// Remove selected class from other .menu-link elem
thisObj.addClass('selected');
$('.menu-link').not(thisObj).removeClass('selected');
// Set Tab Header
this.setHeader(hash);
// Hide all sections
// And display only the hashed section
$('section').css('display','none');
$(hash).css('display','block');
}
/**
* Switch My Account Tab
* According to the passed ID
*
* @return void
*/
public switchTab (e?: Event): void {
if (e && e.type === "click") {
this.displayTabOnClick($('.menu-link'),e);
}
else {
this.displayTabOnPageLoad($('.menu-link'));
}
}
}
App.ts文件
// My Account Page
let page = new MyAccount;
if (URL.checkPath('/user/myaccount')) {
page.switchTab();
}
$('.menu-link').click(page.switchTab);
答案 0 :(得分:2)
调用this
时,您遇到了$('.menu-link').click(page.switchTab);
范围问题(此的范围限定为调用方,而不是page
)
修复它的其中一个选项:
$('.menu-link').click(e => page.switchTab(e));
另一个:
$('.menu-link').click(page.switchTab.bind(page));
我选择第一个,因为它保持了类型安全。