“TypeError:Undefined不是RequireJS中的函数”(从依赖项传递对象)

时间:2013-03-19 12:46:30

标签: javascript requirejs amd

所以我正在努力学习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底部的相应括号时,它可以正常工作。

2 个答案:

答案 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