Rumah > Soal Jawab > teks badan
Menggunakan rangka kerja Risalah, bersedia untuk memanjangkan objek.
Kod adalah seperti berikut:
var FxtMap = L.Class.extend({
_preZoom: 4,
_initZoom: 4,
_queryScale: 7,
_map:null,
fxtData: null,
options: {
center: [31.2, 121.46715194],
zoom: 4,
crs: sh_crs,
doubleClickZoom: false,
zoomControl: false,
attributionControl: false
},
initialize: function (id, mapOption) {
if (mapOption) {
L.Util.setOptions(this, mapOption);
}
this._map = L.map(id, this.options);
m_tileLayer.addTo(this._map);
m_oldView = this._map.getBounds();
this._map.on({
zoomstart: this.getPreZoom,
zoomend: this.triggerLyrChange,
viewreset: MapViewReset,
moveend: MapDrag
});
this._map.invalidateSize("true");
},
getPreZoom: function (e) {
this._preZoom = this._map.getZoom();
},
triggerLyrChange: function () {
if (this._map.getZoom() == this._queryScale && this._map.getZoom() > this._preZoom) {
this._map.fire('jsonLyrType');
}
if (this.getZoom() == this._queryScale - 1 && this._map.getZoom() < this._preZoom) {
this._map.fire('imgLyrType');
}
},
...
})
getPreZoom dan triggerLyrChange adalah kedua-dua fungsi mengikat peristiwa Ini dalam fungsi ini ialah _map bagi objek yang dirujuk dengan betul dalam fungsi ini. Bolehkah saya hanya menggunakan FxtMap.prototype?
大家讲道理2017-07-05 10:57:22
Tiada masalah seperti yang dinyatakan di atas, hanya gunakan bind, atau anda boleh mensimulasikan bind sendiri,
Function.prototype.NewBind = function(obj){
var _self = this;
return function(){
_self.call(obj,arguments);
};
};
//调用的话
getPreZoom: function (e) {
this._preZoom = this._map.getZoom();
}.NewBind(this)
//和bind一样
習慣沉默2017-07-05 10:57:22
Anda fikirkan sendiri, tanya dan jawab soalan anda sendiri.
Ini adalah masalah biasa dengan pembolehubah 'ini' dalam js Dalam fungsi mengikat acara, fungsi panggil balik akhirnya dipanggil oleh objek mengikat acara, jadi 'ini' pada masa ini menunjuk ke objek pada masa ini mahu menukar fungsi panggil balik Pembolehubah 'ini' menghala ke objek contoh, dan anda perlu menukar titik ini secara manual melalui Function.prototype.bind.