gpt4 book ai didi

javascript - 在 Angular-CLI 项目中使用 jQuery

转载 作者:行者123 更新时间:2023-11-30 11:34:49 25 4
gpt4 key购买 nike

我正在使用 "@angular/cli": "1.0.2"angular version 4

出于某种原因,我不得不为 select area 使用基于 jquery 的插件因为我在 angular 中找不到等效的插件。

这是我的组件的样子

declare var $ : any;
//adding only necessary code
export class SelectComponent implements OnInit {

constructor(private _ngZone: NgZone) {}

public rowData: any = [];

ngOnInit() {
$('img#example').selectAreas({
minSize: [10, 10],
onChanged: this.debugQtyAreas,
width: 500,
areas: [{
x: 10,
y: 20,
width: 60,
height: 100,
}]
});
}
debugQtyAreas(event, id, areas) {
this.rowData = areas.map(function(obj) {
return {
left: obj.x,
top: obj.y,
id: obj.id
};
});
};
}

我的 jquery 东西是如何工作的,我可以选择图像上的区域。

但是我推送/分配给数组 rowData 的值没有在 View 中更新

我尝试在互联网上搜索,发现这个解决方案适用于所有人,但不适合我

this._ngZone.run(() => {
//running code inside this
})

但是我在这里遇到错误

Cannot read property 'run' of undefined

当我尝试推送数据而不是像下面那样从 map 分配数据时,rowData 也发生了同样的事情

for(var i = 0; i < areas.length; i++){
this.rowData.push({
left: areas[i].x,
top: areas[i].y,
id: obj.id
});
}

It says Cannot read property 'push' of undefined

最佳答案

如果您想保留this 引用,则在通过引用传递函数时需要使用bind

onChanged: this.debugQtyAreas.bind(this)

当您使用 TypeScript 编写内联函数时,请勿使用 function 前缀。如果您使用 => 表示法,则 this 引用将默认保留。

    this.rowData = areas.map((obj) => {
return {
left: obj.x,
top: obj.y,
id: obj.id
};
});

关于javascript - 在 Angular-CLI 项目中使用 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com