我在Javascript中有以下课程:
cart.js
class Cart{
static addItem(data, beforeSendCallback=null, successCallback=null, errorCallback=null) {
const emptyCallback = ()=>{}
if(data){
$.ajax({
url: '/orders/',
type: 'POST',
data: data,
beforeSend: beforeSendCallback == null ? emptyCallback : beforeSendCallback,
success: successCallback == null ? emptyCallback : successCallback,
error: errorCallback == null ? emptyCallback : errorCallback,
dataType: 'json'
})
}
}
}
现在,在我得到的另一个文件中:
item.js
...
function addItemToCart(e) {
e.preventDefault()
let data = {
'itemId': $('#item_id').val(),
'type': $('#item_type').val(),
'quantity': $('#quantity').val(),
'stock': $('#in_stock').val(),
'price': $('#item_price').val()
}
if (data.stock != 2) {
Cart.addItem(data, disableAddToCartBtn(true), disableAddToCartBtn(false))
}
}
...
当按下add-cart-btn
时,执行此功能但我收到错误:
未捕获的ReferenceError:未定义购物车, 在HTMLAnchorElement.addItemToCart(item.js:20) 在HTMLAnchorElement.dispatch(jquery.js:5206) 在HTMLAnchorElement.elemData.handle(jquery.js:5014)
这两个文件正被添加到app.js
,负责通过webpack处理它们:
require('./core/cart')
require('./item')
由于我首先要求./core/cart
我认为其内容可用于./item
,我错了吗?
答案 0 :(得分:2)
您需要在Cart
中导出cart.js
类,然后导入并实际将分配给您要使用它的变量。在cart.js
:
// ....
module.exports = Cart;
然后在您要使用的任何模块中Cart
:
const Cart = require('./core/cart');
// use the `Cart` class.
答案 1 :(得分:2)
尝试将导入的购物车分配给变量:
const Cart = require('./core/cart');
并确保您在cart.js中导出购物车:
module.exports = class Cart {