繁体   English   中英

调用Javascript类方法会收到错误“找不到变量”

[英]Calling a Javascript class method gets error 'Can't find variable'

当我运行茶匙茉莉花测试时,出现以下错误。

错误

ReferenceError:找不到变量: http:// localhost:3000 / assets / favorite.self-67fd17843e64bfbeed401bd.js?body = 1?body = 1 (第49行)中的Modify_create_favorite

favorite.js文件

class Favorites {

  static create(listing_id) {
    modify_create_favorite(find_favorite(listing_id));
  }

  static find_favorite(listing_id) {
    return $("#i-favorite-"+listing_id);
  }

  static modify_create_favorite(object) {
    object.removeClass('fa-heart-o').addClass('fa-heart').parent().attr('data-method','delete');
  }
}

茶匙茉莉花:

  it("will change the class", function() {
    fixture.set(favorite_html);
    Favorites.create('17');
    expect( $('#i-favorite-17', fixture.el) ).not.toHaveClass( 'fa-heart-o')
    expect( $('#i-favorite-17', fixture.el) ).toHaveClass( 'fa-heart')
    expect( $('#i-favorite-17', fixture.el).parent() ).toHaveAttr("data-method",'delete')    
    expect(jQuery).toBeDefined();
  });

只能通过调用类来调用static方法,而无需创建实例,因此在create内部应该执行以下操作:

Favorites.modify_create_favorite(Favorite.find_favorite(listing_id))

//or 
this.modify_create_favorite(this.find_favorite(listing_id))

在您当前的实现中,您的代码正在寻找一个名为modify_create_favorite()的函数,因为不知道这是您的类的方法。

有关static方法的更多信息https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/reference/Classes/static

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM