0

だから私は仕事のためにRequireJSを学ぼうとしています。簡単そうに見えたのですが、問題が発生しました。依存関係の 1 つからオブジェクトを渡すにはどうすればよいですか?

以下のコードは、新しい変数に対して「TypeError: Undefined is not a function」を返します。typeof 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;
           }
        }
    }
);

編集: 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 に答える