Silverlight メディア プレーヤーを表示する必要がある魔女の AngularJS 上に構築された SPA があります。現在選択されているメディア ファイルの ID 番号を Silverlight アプリに渡して、再生に必要な情報を取得できるようにする必要があります。まず、Silverlight の initParams を次のように使用してみました。
<param name="initParams" runat="server" value="{{value}}"/>
その後、URL から ID を取得して、Silverlight アプリの onLoad 関数から次のように設定しようとしました。
<script type="text/javascript">
var pathArray = window.location.pathname.split('/');
var value = pathArray[1];
var slCtl = null;
function pluginLoaded(sender, args) {
slCtl = sender.getHost();
slCtl.Content.SilverlightObject.SetMediaId(value);
}
</script>
しかしすぐに、AngularJS コントローラーからの値と、ページが読み込まれた後に設定された URL の両方であることに気付きました。そのため、Silverlight アプリが読み込まれたときに、正しい情報がありませんでした。
現時点では、これを解決する最善の方法は、Silverlight アプリケーションを作成する AngularJS ディレクティブを作成することだと思います。これは、id にアクセスできるためです。
私はここで正しい道を進んでいますか?この問題を解決する最も簡単な方法は何ですか?
編集: 私の最初の試みの 1 つで、Silverlights OnLoad にいくつかのインライン javacript 関数を添付しました
<param name="onLoad" value="pluginLoaded" />
そのメソッドは、Silverlight アプリケーションのメソッドを呼び出して、値を渡します。
slCtl.Content.SilverlightObject.SetMediaId(value);
このメソッドを AngularJS から呼び出すことは可能でしょうか? これについてもディレクティブを作成する必要がありますか、それともコントローラーから作成できますか? コントローラー/ディレクティブで Silverlight オブジェクトにアクセスするにはどうすればよいですか?