C# 通过silverlight控件调用angular js方法
我用AngularJs构建了我的网页,它承载了一个Silverlight控件。现在我需要调用从silverlight角度放置在控制器中的函数。这是我的控制器角度代码示例:C# 通过silverlight控件调用angular js方法,c#,angularjs,silverlight,C#,Angularjs,Silverlight,我用AngularJs构建了我的网页,它承载了一个Silverlight控件。现在我需要调用从silverlight角度放置在控制器中的函数。这是我的控制器角度代码示例: var myModule= angular.module('MyModule', []); myModule.controller('MainController', ['$rootScope', '$scope', '$http', function ($rootScope, $scope, $http)
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”)。
有人知道吗?您可以尝试编写自定义Javascript代码并执行类似操作
<script type="text/javascript">
function callAngularFunc(message) {
angular.element($("#elementID")).scope().testMethodForSilverlight(message);
}
</script>
public class ViewModel : ViewModelBase, INotifyDataErrorInfo
{
public void CallAngularMethod()
{
HtmlPage.Window.Invoke("callAngularFunc", new[] { "Testing" });
}
}
谢谢,很好的解决方案。我还找到了一个角度较小的解决方案。您可以声明不带“$scope”或不带“this”的方法,并且此方法将是全局的。但你的解决方案更好。非常感谢你,这对你很有帮助。祝你好运谢谢