0

所以我正在努力学习 RequireJS 来工作。这似乎很容易,但后来我遇到了一个问题。如何从其中一个依赖项中传递对象?

下面的代码为新变量返回“TypeError: Undefined is not a function”。我尝试记录 GoogleMap 的类型,但它也返回未定义。

这样做的正确方法是什么?

主.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;
           }
        }
    }
);

编辑:我应该补充一点,当我删除顶部的“定义”行和 googlemaps.js 底部的相应括号时,它工作正常。

4

2 回答 2

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;

  }
);
于 2013-03-19T13:34:21.580 回答
0
require(['test', 'geo', 'googlemaps'], function (GoogleMap) {

将其更改为

require(['test', 'geo', 'googlemaps'], function (test, geo, GoogleMap) {

然后再试一次。

您的 GoogleMap 没有映射到 googlemaps 脚本,而是用于测试。它按照您指定依赖项的顺序排列。

无论哪种方式,我之前的答案仍然有效。这就是您应该在 googlemaps.js 文件中返回函数的方式。

希望有帮助。苏杰

于 2013-03-19T14:15:51.573 回答