2009-08-12 20 views
6

私はjavascript関数をネームスペースの中にラップしているので問題があります。 バージョン1のコードが正常に動作しました。もともと、私はこのコードを使用するために使用されるSilverlightの内側からのjavascriptコールする:Silverlightの使い方名前空間でJavascript関数を呼び出すには?

HtmlPage.Window.Invoke("hideMyDiv"); 

を私のjavascriptがこのように見えた:今

function hideMyDiv() { 
$('#MyDiv').fadeOut(); 

}

、私はに私のJavaScriptをリファクタリングしました名前空間に含めることができます。だから、それは次のようになります。

var activity = { 
message: null, 
hideMyDiv: function() { 
    $('#MyDiv').fadeOut(); 
} }; 

私はJavaScriptでこのリファクタリング機能を呼び出すことができ、それは前のように動作します:

$("document").ready(function() { 
activity.hideMyDiv(); }); 

しかし、私はシルバーからそれを使用しようとすると、私はこのエラーを取得します:呼び出しに失敗しました:activity.updateInfo。これは現在のSilverlightコードです:

HtmlPage.Window.Invoke("activity.hideMyDiv"); 

私は間違っていますか? (感謝!)

答えて

11

これが正しい方法..です

ScriptObject so = HtmlPage.Window.Eval("activity") as ScriptObject; 
so.Invoke("hideMyDiv"); 
+1

お礼は、魔法のように動作します。 – bperreault