2012-02-14 16 views
0

詳細モードとそれぞれのexternでgoogle閉包コンパイラを理解することはできません。この関数の外部関数は何ですか?

具体的には:私は自分のHTML(<a href="javascript:searchAddress();">)から呼び出す必要があるので、高度なモードでCCにこの関数の名前を変更する方法を誰に教えてください。

function searchAddress() { 

    geocoder = new google.maps.Geocoder(); 
    var useraddress = $('#where').val(); 

    if (geocoder && useraddress) { 
     geocoder.geocode({'address': useraddress, 'region': region}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       myPosition = results[0].geometry.location; 
       myAccuracy = 150; 
       echoAddress(results[0].formatted_address); 
      } 
     }); 
    } 
} 

私は、私は機能が

window['searchAddress'] = searchAddress 

または

function searchAddress() {} 

が、これらのどれものようなものを渡して、外部コードから呼び出されているので、のexternファイルを作成する必要があります理解と思いましたいくつかの他の試行が行われます。 CCは、エラーなしでコンパイルが、ブラウザはCCによって削除されました

Uncaught exception: ReferenceError: Undefined variable: searchAddress

searchAddressを()文句を言うと、もう私のmin.js中の関数名ではありません。ヒントありがとう。説明は、ありがとう、感謝します。

+0

この場合、エクスターナルは必要ありません。これで十分です。 function searchAddress(){ alert( "me"); } ウィンドウ['searchAddress'] = searchAddress; これは私のためにコンパイルします: window.searchAddress = function(){alert( "me")}; – John

+0

私はあなたが輸出品と混乱していると思います。 Externsは名前の変更を防止します。エクスポートによってデッドコードの削除が防止されます。 "window [...] = ..."トリックは、関数をエクスポートする適切な方法です。 –

答えて

0

あなたが関数をエクスポートしたい、EXTERNを作成する必要はありません。

http://code.google.com/closure/compiler/docs/api-tutorial3.html

コード(ないにexternファイル)にこれを追加します。

ウィンドウの[ 'searchAddressを'] = searchAddress

+0

上記のコメントをお寄せいただきありがとうございます。私は実際に外貨と輸出を混同していましたが、私の輸出を私の.jsファイルに直接書き込まなければならなかったのです...ありがとう – Hein

関連する問題