调用 Javascript class 方法出现错误“找不到变量”
Calling a Javascript class method gets error 'Can't find variable'
当我 运行 我的 teaspoon-jasmine 测试时,我收到以下错误。
错误
ReferenceError: Can't find variable: modify_create_favorite in
http://localhost:3000/assets/favorite.self-67fd17843e64bfbeed401bd.js?body=1?body=1
(line 49)
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
方法只能通过调用 class 而不创建实例来调用,因此在 create
中你应该这样做:
Favorites.modify_create_favorite(Favorite.find_favorite(listing_id))
//or
this.modify_create_favorite(this.find_favorite(listing_id))
在您当前的实现中,您的代码正在寻找一个名为 modify_create_favorite()
的函数,因为不知道这是您的 class.
的一个方法
更多关于 static
方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/reference/Classes/static
当我 运行 我的 teaspoon-jasmine 测试时,我收到以下错误。
错误
ReferenceError: Can't find variable: modify_create_favorite in http://localhost:3000/assets/favorite.self-67fd17843e64bfbeed401bd.js?body=1?body=1 (line 49)
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
方法只能通过调用 class 而不创建实例来调用,因此在 create
中你应该这样做:
Favorites.modify_create_favorite(Favorite.find_favorite(listing_id))
//or
this.modify_create_favorite(this.find_favorite(listing_id))
在您当前的实现中,您的代码正在寻找一个名为 modify_create_favorite()
的函数,因为不知道这是您的 class.
更多关于 static
方法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/reference/Classes/static