通过silverlight控制调用角度js方法

时间:2014-10-07 12:01:59

标签: c# angularjs silverlight

我使用AngularJs构建的Web页面托管Silverlight控件。现在我需要调用一个放在控制器中的函数来自silverlight。这是我的控制器角度代码示例:

    var myModule= angular.module('MyModule', []);

    myModule.controller('MainController', ['$rootScope', '$scope', '$http', function ($rootScope, $scope, $http) {

        var _self = this;
        _self.testMethodForSilverlight = function (message)
        {
            alert("message: " + message);
        }; 
}]);

这是我的Silverlight viewModel中的代码:

public class ViewModel : ViewModelBase, INotifyDataErrorInfo
    { 
      public void CallAngularMethod()
      {
           HtmlPage.Window.Invoke("testMethodForSilverlight ", new[] { "Testing" });
      }
    }

不幸的是,当我调用该方法时,返回的错误是("无法调用:testMethodForSilverlight")。 有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

您可以尝试编写自定义Javascript代码并执行此类操作

<script type="text/javascript">
 function callAngularFunc(message) {
    angular.element($("#elementID")).scope().testMethodForSilverlight(message);
 }
</script>

这里,elementID将是角度控制器绑定的DOM元素。

有更多信息来自外部in this post访问角度数据。

然后,在你的silverlight代码中,像这样打电话

public class ViewModel : ViewModelBase, INotifyDataErrorInfo
    { 
      public void CallAngularMethod()
      {
           HtmlPage.Window.Invoke("callAngularFunc", new[] { "Testing" });
      }
    }