簡體   English   中英

由requirejs加載的javascript文件中的原型函數

[英]prototype functions in a javascript file loaded by requirejs

當我將這段代碼放在script.js文件中並包含它運行良好時,

但是當我在requirejs加載的javascript文件中實現此代碼時,找不到從外部調用的createMapOnOverlay函數,如下所示:

var overlay = new AlarmOverlay(...);
overlay.createMapOnOverlay(..);

alarmoverlay.js:

AlarmOverlay.prototype = new google.maps.OverlayView();

/* constructor */
function AlarmOverlay(bounds, alarmNumber, alarmCssClass) {

    // initialize all properties for an alarm
    this.bounds = bounds;
    this.alarmNumber = alarmNumber;
    this.alarmCssClass = alarmCssClass;
}

AlarmOverlay.prototype.createMapOnOverlay = function(map) {
    // Explicitly call setMap on this overlay
    this.map = map;
    this.setMap(map);
};

AlarmOverlay.prototype.onAdd = function () {


};

AlarmOverlay.prototype.draw = function () {


};

我必須將上面的代碼放在由requirejs加載的以下script.js文件中:但是下面的代碼不起作用

define(function() {
    return function AlarmOverlay(bounds, alarmNumber, alarmCssClass) {

        var self = this;

        self.prototype = new google.maps.OverlayView();

        self.bounds = bounds;
        self.alarmNumber = alarmNumber;
        self.alarmCssClass = alarmCssClass;      


        //AlarmOverlay.prototype.createMapOnOverlay = function(map) {      
           self.map = map;
           self.setMap(map);

        //};

        AlarmOverlay.prototype.onAdd = function() {

        };

        AlarmOverlay.prototype.draw = function() {

        };
    };
});

我如何從Google OverlayView派生我可以從外部調用createMapOnOverlay函數,而應該從基類調用setMap?

在AlarmOverlay.js中:

define(['google'], function(google) {

AlarmOverlay.prototype = new google.maps.OverlayView();

/* constructor */
function AlarmOverlay(bounds, alarmNumber, alarmCssClass) {

    // initialize all properties for an alarm
    this.bounds = bounds;
    this.alarmNumber = alarmNumber;
    this.alarmCssClass = alarmCssClass;
}

AlarmOverlay.prototype.createMapOnOverlay = function(map) {
    // Explicitly call setMap on this overlay
    this.map = map;
    this.setMap(map);
};

AlarmOverlay.prototype.onAdd = function () {


};

AlarmOverlay.prototype.draw = function () {


};


return AlarmOverlay;

}

並在主要js文件中:

require(['AlarmOverlay'], function(AlarmOverlay) {
var overlay = new AlarmOverlay(...);
overlay.createMapOnOverlay(..);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM