所以我正在努力学习RequireJS的工作。这似乎很容易,但后来我遇到了一个问题。如何从其中一个依赖项中传递对象?
以下代码为新变量返回“TypeError:Undefined is not function”。我尝试记录GoogleMap的类型,但它也返回undefined。
这样做的正确方法是什么?
Main.js
require(['test', 'geo', 'googlemaps'], function (GoogleMap) {
var map = new GoogleMap();
});
googlemaps.js
define(function() {
function GoogleMap(){
var i = 0;
var userMarkers = [];
var map = {}
this.initialize = function(lat,lng){
map = getMap(lat,lng);
}
var getMap = function(lat,lng){
var asldOptions = {
zoom: 4,
center: new google.maps.LatLng(59, 18),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), asldOptions);
return map;
}
}
}
);
编辑我应该补充一点,当我删除顶部的'define'行以及googlemaps.js底部的相应括号时,它可以正常工作。
答案 0 :(得分:1)
define(function() {
var GoogleMap = function(){
var i = 0;
var userMarkers = [];
var map = {}
this.initialize = function(lat,lng){
map = getMap(lat,lng);
}
var getMap = function(lat,lng){
var asldOptions = {
zoom: 4,
center: new google.maps.LatLng(59, 18),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map-canvas"), asldOptions);
return map;
}
}
return GoogleMap;
}
);
答案 1 :(得分:0)
require(['test', 'geo', 'googlemaps'], function (GoogleMap) {
将其更改为
require(['test', 'geo', 'googlemaps'], function (test, geo, GoogleMap) {
再试一次。
您的GoogleMap未映射到googlemaps脚本,而是要测试。它按照您指定依赖项的顺序。
无论哪种方式,我之前的回答仍然存在。这就是你应该在googlemaps.js文件中返回该函数的方法。
希望有所帮助。 SUJ