通过silverlight控件调用angular js方法

本文关键字:js 方法 angular 调用 silverlight 控件 通过 | 更新日期: 2023-09-27 18:25:44

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

    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视图模型中的代码:

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

不幸的是,当我调用该方法时,返回的错误是("调用失败:testMethodForSilverlight")。有人知道吗?

通过silverlight控件调用angular js方法

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

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

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

在这篇文章中有更多关于从外部访问角度数据的信息。

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

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