2016-08-31 11 views
0

Typescriptと名前空間を持つようなものがあるようです。私が名前空間にTypescript関数を置き、その関数をonclickで呼び出すと、呼び出しはIEでは失敗しますが、ChromeとFirefoxでは機能します。cshtmlからネームスペース内の関数を呼び出す

すなわち活字体

namespace @idARPanelHdrWithHash 
{ 
    export function ChangeText(id : string) 
    { 
    } 
} 

CSHTML:

<p id="@idARPanelHdr" 
    class="UserARViewMore collapsed" 
    onclick="ChangeText('@idARPanelHdrWithHash')" 
    data-toggle="collapse" 
    data-target="@idARPanelWithHash"> 
    VIEW MORE 
</p> 

私は( 'idARPanelHdrWithHash @')に「AdminEditPages.ChangeTextのonclickに変更した場合、それはIEでなく、FirefoxやChromeで動作します

IEでデバッグツールを開いている場合は、コンソールを呼び出し、「。」を押すとAdminEditPagesと入力してください。私は明らかに、名前空間は、FirefoxやChromeには存在しません。すべてのタイプの先のものを取得しないが、クロムまたはFirefoxで何も。

私は何をしないのですか?

感謝を事前に、

アダムベンソン。

+0

これはおそらくtypescriptとは関係ありませんが、使用しているこの 'cshtml'のものを使用している可能性があります。 –

答えて

0

まず名前空間のために使用されている名前は、有効な識別子名ではなく、コードをJavaScriptにコンパイルされません。

だけ@を失う。

それはあなたが発生したJavascriptが何であるかを見ることができますコンパイル
namespace idARPanelHdrWithHash 
{ 
    export function ChangeText(id : string) 
    { 
    } 
} 

var idARPanelHdrWithHash; 
(function (idARPanelHdrWithHash) { 
    function ChangeText(id) { 
    } 
    idARPanelHdrWithHash.ChangeText = ChangeText; 
})(idARPanelHdrWithHash || (idARPanelHdrWithHash = {})); 

そのCSHTMLは最終的になりChangeText関数を呼び出すの正しい方法をhtmlの場合となります。

<p id="@idARPanelHdr" 
    class="UserARViewMore collapsed" 
    onclick="idARPanelHdrWithHash.ChangeText('@idARPanelHdrWithHash')" 
    data-toggle="collapse" 
    data-target="@idARPanelWithHash"> 
    VIEW MORE 
</p> 

は、クイックリファレンスのためにあなたは何にコンパイル活字体のコードを参照するために活字体の遊び場を使用することができます。 thisのように。

+0

あなたの返事、toskvに感謝します。私はネームスペースのタイプミスをお詫びします。私は昨日、私が少し盲目になってしまったという問題を見つめていたと思います。あなたの返信は私に何を期待しているのか安心させたので、すべてのブラウザのキャッシュをきれいにして再試行しました。今回は、IE、Chrome、Firefoxでのエクスペリエンスとして機能しました。そのため、イベントハンドラのプレフィックスにcshtmlのネームスペースを付けると機能します。ありがとう! –

+0

私はそれがうれしいです。あなたが答えることができたら、その答えを中核としてマークして、他の人がそれを行う方法であることを知るようにしてください。 :) – toskv

+0

完了:-)私は今週Visual Studio 2013 \ MVCでブラウザが間違ったコードを実行しているように見える(これが背後にあるように思われる)いくつかの "奇妙なもの"を持っています。あるケースをチェックするために以前のバージョンのソフトウェアを起動し、私が作業していたバージョンを起動しましたが、IIS Expressは古いバージョンを提供しました。再起動してください。 –

関連する問題