使用字符串键和JQuery值动态创建关联数组

时间:2017-09-25 07:27:30

标签: javascript typescript

我的页面上有多个产品,想要创建一个关联数组,其中包含产品编号作为键,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

我究竟如何创建这样的关联数组?

1 个答案:

答案 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来实现此目标。