我使用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")。 有没有人有任何想法?
答案 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" });
}
}