나는 Cefsharp 크롬 브라우저와 Nancy으로 호스팅되는 간단한 웹 응용 프로그램을 wpf 응용 프로그램에 내장 된 로컬 포트에 가지고 있습니다. 내 웹 응용 프로그램에서 각도를 사용하고 싶지만 각도 범위 내에서 변수를 변경하는 데 어려움을 겪고 있습니다.nancy 호스팅 웹 응용 프로그램에 cefsharp 브라우저를 연결하는 데 문제가 있습니다.
각도 페이지에서 직접 모든 것이 완벽하게 작동합니다. 그러나 C#과 JS 사이의 갭을 넘을 때 부분적으로 실패합니다. C#에서 전화를 끊으면 경고 창이 여전히 나타나고 report_type
의 값이 경고 상자에서 변경된 것처럼 보입니다. 그러나 ng-switch
에는 아무 것도 업데이트되지 않습니다. 그것은 마치 내가 C#에서 호출을 해고 할 때 정확한 범위에 접근하지 못하는 것입니다. 그렇다면 각도 범위의 메소드를 C#에서 호출 할 수 없습니다.
C#으로,이를 호출 서비스하는 웹 페이지에서
private void GIS_Button_Click(object sender, RoutedEventArgs e)
{
this.report_browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("ext_switch_gis();");
}
을 :
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.switch_gis = function switch_gis() {
alert("begin switch gis");
$scope.report_type = "gis";
alert("end switch gis");
alert("report value is: " + $scope.report_type);
}
$scope.switch_bar = function switch_bar() {
alert("begin switch bar");
$scope.report_type = "bar";
alert("end switch bar");
alert("report value is: " + $scope.report_type);
}
$scope.mytest = function mytest(words) {
alert(words);
}
$scope.switch_bar();
});
function ext_switch_gis() {
var outside_scope = angular.element(document.getElementById('myAppDiv')).scope();
outside_scope.mytest("Beginning of external js call!");
outside_scope.switch_gis();
outside_scope.mytest("End of external js call!");
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<div id="myAppDiv" ng-app="myApp" ng-controller="myCtrl">
<div id="report_switch_div" ng-switch="report_type">
<div ng-switch-when="bar">
<h1>bar</h1>
</div>
<div ng-switch-when="gis">
<h1>gis</h1>
</div>
<div ng-switch-default>
<h1>Select a report type</h1>
</div>
</div>
<button ng-click="switch_gis()">gis test</button>
<button ng-click="switch_bar()">bar test</button>
</div>