我正在转换一个旧的有角度的1.x站点,并且遇到了我遇到的一部分代码。
旧代码:
var loaded = vm.cartMap.on('load', function() {
loaded.remove();
setupExtentLayer();
});
function setupExtentLayer() {
esriLoader.require(['esri/layers/GraphicsLayer'], function (GraphicsLayer) {
vm.extentLayer = new GraphicsLayer();
vm.cartMap.addLayer(vm.extentLayer);
if (vm.cartItems.length > 0) {
_updateCartStatus();
}
});
}
新代码:
const loaded = this.cartMap.on('load', function() {
loaded.remove();
this.setupExtentLayer();
});
setupExtentLayer() {
loadModules(['esri/layers/GraphicsLayer']).then(([GraphicLayer]) => {
this.extentLayer = new GraphicLayer();
this.cartMap.addLayer(this.extentLayer);
if (this.cartItems.length > 0) {
this._updateCartStatus();
}
});
}
我的问题是有角度的2.6代码无法识别setupExtentLayer()方法。
我在这里想念什么?
答案 0 :(得分:2)
您可能需要将setupExtentLayer
函数绑定到父类构造函数中。
类似-
this.setupExtentLayer = this.setupExtentLayer.bind(this);
答案 1 :(得分:1)
问题出现在JS
中,上下文为this
,而不是Angular 2
中。
this.cartMap.on('load', function() {
loaded.remove();
this.setupExtentLayer(); // js this
}.bind(this)); // bind this to function