2013-05-16 2 views
4

Когда я ставлю этот код в файл script.js и включаю в себя он работает нормально,прототип функция в файл JavaScript, загруженная requirejs

но когда я реализую этот код в файл яваскрипта нагруженного requirejs функция 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() { 


}; 

I должны поставить код выше в этом ниже script.js файл, который загружается на requirejs: но приведенный ниже код не работает

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 из базового класса?

ответ

6

в 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(..); 
} 
+0

да да да. Возврат пропал :) – Elisabeth

Смежные вопросы