W moim teście, biorąc pod uwagę 2 dokumenty, A i B. W dokumencie znajduje się element iframe, źródłem iframe jest dokument B. Moje pytanie brzmi: jak zmodyfikować B dokumentować pewien zakres zmiennej?Angularjs: wywołaj inny zakres, który w iframe
Oto mój kod: Dokument
<html lang="en" ng-app="">
<head>
<meta charset="utf-8">
<title>Google Phone Gallery</title>
<script type='text/javascript' src="js/jquery-1.10.2.js"></script>
<script type='text/javascript' src="js/angular1.0.2.min.js"></script>
<script>
var g ;
function test($scope,$http,$compile)
{
$scope.tryget = function(){
var iframeContentWindow = $("#iframe")[0].contentWindow;
var iframeDOM = $("#iframe")[0].contentWindow.document;
var target = $(iframeDOM).find("#test2");
var iframeAngular = iframeContentWindow.angular;
var iframeScope = iframeAngular.element("#test2").scope();
iframeScope.parentcall();
iframeContentWindow.angular.element("#test2").scope().tempvalue = 66 ;
iframeScope.tempvalue = 66;
iframeContentWindow.tt = 22;
iframeScope.parentcall();
console.log(iframeScope.tempvalue);
console.log(angular.element("#cont").scope());
}
}
</script>
</head>
<body>
<div ng-controller="test">
<div id="cont" >
<button ng-click="tryget()">try</button>
</div>
</div>
<iframe src="test2.html" id="iframe"></iframe>
</body>
</html>
Mój dokument B:
<!doctype html>
<html lang="en" ng-app="">
<head>
<meta charset="utf-8">
<title>Google Phone Gallery</title>
<script type='text/javascript' src="js/jquery-1.10.2.js"></script>
<script type='text/javascript' src="js/angular1.0.2.min.js"></script>
<script>
var tt =11;
function test2($scope,$http,$compile)
{
console.log("test2 controller initialize");
$scope.tempvalue=0;
$scope.parentcall = function()
{
$scope.tempvalue = 99 ;
console.log($scope.tempvalue);
console.log(tt);
}
}
</script>
</head>
<body>
<div ng-controller="test2" id="test2">
<div id="cont" >
<button ng-click="parentcall()">get script</button>
</div>
{{tempvalue}}
</div>
</body>
</html>
Uwaga: Faktycznie jest jakiś sposób na to, co czuję, że jak włamać się zamiast właściwego sposobu, aby to zrobić: czyli utworzyć przycisk w b Dokument, a następnie powiązać z angularjs ng-click. Następnie kliknij przycisk "wyzwalacz" jQuery dokumentu.
Krótka notka. Pamiętaj, że zazwyczaj nie można komunikować się między ramką iFrame a stroną nadrzędną, chyba że znajdują się one w tej samej domenie. Są sposoby, aby to zrobić, ale nie możesz po prostu uzyskać do nich bezpośredniego dostępu. Po prostu nie napotkasz tego problemu później :) –
Tak, istnieje ta sama domena i ten sam projekt. Po prostu nie można poprawnie manipulować tym obiektem i zmienną JS. Zastanawiasz się, czy ktoś ma lepszy pomysł. – Stupidfrog