Javascript 从AngularJS到Silverlight获取数据

Javascript 从AngularJS到Silverlight获取数据,javascript,silverlight,angularjs,Javascript,Silverlight,Angularjs,我有一个基于AngularJS的水疗中心,我需要展示一个Silverlight媒体播放器。 我需要将当前选定媒体文件的id号传递给Silverlight应用程序,以便它能够获取播放所需的信息。 首先,我尝试使用Silverlight的initParams: <param name="initParams" runat="server" value="{{value}}"/> 可以从AngularJS调用此方法吗?我是否也必须为此创建一个指令,或者我可以从控制器执行此操作?我应该如何

我有一个基于AngularJS的水疗中心,我需要展示一个Silverlight媒体播放器。 我需要将当前选定媒体文件的id号传递给Silverlight应用程序,以便它能够获取播放所需的信息。 首先,我尝试使用Silverlight的initParams:

<param name="initParams" runat="server" value="{{value}}"/>

可以从AngularJS调用此方法吗?我是否也必须为此创建一个指令,或者我可以从控制器执行此操作?我应该如何访问控制器/指令中的Silverlight对象?

每当需要执行DOM操作时,都应该从指令中执行该操作

这是我们提出的最终解决方案

<div class="ui-helper-clearfix no-left-padding">
    <form id="form1" runat="server" style="height: 500px">
        <div id="silverlightControlHost" style="height: 500px">

            <object id="MediaPlayer_8" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="800" height="500">
                <param name="source" value="../../../ClientBin/MediaPlayer.xap" />
                <param name="onError" value="onSilverlightError" />
                <param name="background" value="#f2f2f2" />
                <param name="minRuntimeVersion" value="5.0.61118.0" />
                <param name="autoUpgrade" value="true" />
                <param name="onLoad" value="pluginLoaded" />
                <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration: none">
                    <img src="http://go.microsoft.com/fwlink/?LinkUserId=161376" alt="Get Microsoft Silverlight" style="border-style: none" />
                </a>
            </object>
            <iframe id="_sl_historyFrame" style="border: 0px; height: 0px; visibility: hidden; width: 0px;"></iframe>
        </div>
    </form>
    <script type="text/javascript">
            var slCtl = null;
            function pluginLoaded(sender, args) {
                slCtl = sender.getHost();
                slCtl.Content.SilverlightObject.SetMediaId(@ViewBag.CurrentMedia);
            }
        </script>

希望这有帮助。

是的。但是我并不真的需要做DOM操作(现在!),我的问题是从AngularJS到Silverlight获取一个值。如果我能找到一个不必操纵DOM的解决方案,我会更喜欢。嗨,Mikael,你找到这个问题的答案了吗?
<param name="onLoad" value="pluginLoaded" />
slCtl.Content.SilverlightObject.SetMediaId(value);
<div class="ui-helper-clearfix no-left-padding">
    <form id="form1" runat="server" style="height: 500px">
        <div id="silverlightControlHost" style="height: 500px">

            <object id="MediaPlayer_8" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="800" height="500">
                <param name="source" value="../../../ClientBin/MediaPlayer.xap" />
                <param name="onError" value="onSilverlightError" />
                <param name="background" value="#f2f2f2" />
                <param name="minRuntimeVersion" value="5.0.61118.0" />
                <param name="autoUpgrade" value="true" />
                <param name="onLoad" value="pluginLoaded" />
                <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration: none">
                    <img src="http://go.microsoft.com/fwlink/?LinkUserId=161376" alt="Get Microsoft Silverlight" style="border-style: none" />
                </a>
            </object>
            <iframe id="_sl_historyFrame" style="border: 0px; height: 0px; visibility: hidden; width: 0px;"></iframe>
        </div>
    </form>
    <script type="text/javascript">
            var slCtl = null;
            function pluginLoaded(sender, args) {
                slCtl = sender.getHost();
                slCtl.Content.SilverlightObject.SetMediaId(@ViewBag.CurrentMedia);
            }
        </script>
<param name="onLoad" value="pluginLoaded" />
<script type="text/javascript">
            var slCtl = null;
            function pluginLoaded(sender, args) {
                slCtl = sender.getHost();
                slCtl.Content.SilverlightObject.SetMediaId(@ViewBag.CurrentMedia);
            }
        </script>
[ScriptableMember]
    public void SetMediaId(int mediaId)
    {
        _viewedMediaId = mediaId;
        _proxy.GetMediaAsync(_viewedMediaId);
    }