4

Google Maps API を RequireJs の非同期モジュールとしてラップしました。

define(['async!http://maps.googleapis.com/maps/api/js?libraries=places&key=APIKEY&sensor=true'],

function(){
    var maps = window.google.maps;

    return maps;
});

次に、API キーを config.js ファイルに抽出して、さまざまな環境の構成設定を保存します。しかし、これが機能する方法はありません (変数名がまだ定義されていないため)。

define([config,
'async!http://maps.googleapis.com/maps/api/js?libraries=places&key' + config.APIKEY + '&sensor=true'],

define() と require() の二重のネストを試みましたが、役に立ちませんでした。望ましい効果を達成するために、依存関係チェーンをどのように記述しますか?

4

1 に答える 1

0

今考えられる唯一の方法は、コールバックを含めることです。何かのようなもの:

define([], function() {
    var exports = {};

    exports.Maps = function (maps) {
        this.hello = function () {
            console.log(maps);
        };
    };

    exports.Factory = function (apiKey) {
        this.manufacture = function (loadedCallback) {
            require(['http://maps.googleapis.com/maps/api/js?libraries=places&key=' + apiKey + '&sensor=true'], function () {
                loadedCallback(new exports.Maps(window.google.maps));
            });
        };
    };

    return exports;
});

それを使用するには、次のようにします。

require(["foo"], function (Foo) {

    var apiKey = "blablabla",
        factory = new Foo.Factory(apiKey);
    factory.manufacture(function (Maps) {
        Maps.hello();
    });

});
于 2013-10-23T10:13:47.657 に答える