Javascript 使用控制器调用helper方法';s方法作为参数
我正在尝试从帮助器类调用方法(clickRegister):Javascript 使用控制器调用helper方法';s方法作为参数,javascript,model-view-controller,helper,Javascript,Model View Controller,Helper,我正在尝试从帮助器类调用方法(clickRegister): class AdminPanelHelper { constructor() { } static clickRegister(callback){ var promise = new Promise(function(res,rej) { $('.register-link').click(function() { $('.admin-body').fadeOut(functio
class AdminPanelHelper {
constructor() {
}
static clickRegister(callback){
var promise = new Promise(function(res,rej) {
$('.register-link').click(function() {
$('.admin-body').fadeOut(function() {
callback();
res();
})
});
})
promise.then(function() {
$('.admin-body').fadeIn();
})
}
}
在我的控制器上:
class AdminPanelController {
constructor() {
this._loginView = new LoginView($('.admin-body'));
this._registerView = new RegisterView($('.admin-body'));
}
showLogin(){
this._loginView.update();
var e = this;
AdminPanelHelper.clickRegister(e._registerView.update);
}
}
但是我在控制台上看到了错误'View.js:7 uncaughttypeerror:cannotread属性'\u element'of undefined'
我将mvc设计合作伙伴与RegisterView扩展视图一起使用。
真的不知道出了什么问题,元素被声明为“this.\u registerView=new registerView($('.admin body'));”
编辑:
添加RegisterView类和View类:
class RegisterView extends View {
constructor(element) {
super(element);
}
template(){
return `
<div class="form-body">
<div class="welcome">
<h2 class="login-welcome">This is only for test, your account will be deleted after 20min</h2>
</div>
<form id="register" class="" action="register" method="POST">
<input type="text" name="user" id="user" value="" placeholder="USER">
<input type="email" name="email" id="email" value="" placeholder="EMAIL">
<input type="password" name="password" id="password" value="" placeholder="PASSWORD">
<input type="password" name="passwordConf" id="passwordConf" value="" placeholder="CONFIRM PASSWORD">
<input class="btn btn-primary register-user" type="submit" value="Register" id='regsubmit'>
</form>
<div class="register-link-body">
<span>Back to <a class="login-link">login</a></span><br>
</div>
</div>
`
}
}
class View {
constructor(element) {
this._element = element;
}
update(model){
this._element.html(this.template(model));
}
}
也许您的代码段缺少一些代码?JavaScript附带的标记(HTML)在哪里?标记中是否存在类为“.register-link”和“.admin-body”的元素?此外,您不需要在JavaScript中创建一个类来获得静态帮助器方法。只需使用一个普通的旧函数。如果我只使用此函数。\u registerView.update(),它将更新到register视图,但如果它喜欢这个问题,则会出现错误。我这样做只是为了训练MVC模型,做动态页面。试试这个
AdminPanelHelper.clickRegister(这个.\u registerView.update.bind(这个))
;事实上,我不确定。你能为你的RegisterView类提供代码吗?