我的页面上有多个产品,想要创建一个关联数组,其中包含产品编号作为键,JQuery元素作为值,因此我创建了此接口
interface ProductMap<T extends JQuery> {
[productNumber: string]: T;
}
然后,在我的班级中,我将其初始化为protected elements: ProductMap<JQuery> = {};
,并希望稍后将其填入数据
const products = $(selector);
if (products.length > 0) {
$.each(products, function (index, product) {
this.elements[$(product).data('product-number')] = $(product);
});
}
但是,我总是收到错误
Uncaught TypeError: Cannot set property '{product-number}' of undefined
我究竟如何创建这样的关联数组?
答案 0 :(得分:1)
this.elements
更改了上下文,因此 $.each
未定义。保留对您的实例的引用以解决此问题:
const products = $(selector);
var self = this;
if (products.length > 0) {
$.each(products, function (index, product) {
self.elements[$(product).data('product-number')] = $(product);
});
}
您也可以使用bind
来实现此目标。