Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用控制器调用helper方法';s方法作为参数_Javascript_Model View Controller_Helper - Fatal编程技术网

Javascript 使用控制器调用helper方法';s方法作为参数

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

我正在尝试从帮助器类调用方法(clickRegister):

  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类提供代码吗?