In meinem Test gegeben 2 Dokument, A und B. In einem Dokument gibt es einen iframe, die iframe Quelle ist B-Dokument. Meine Frage ist, wie man B Dokument bestimmten Umfang der Variable ändert?Angularjs: anderen Bereich aufrufen, der in iframe
Hier ist mein Code: Ein 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>
Mein B Dokument:
<!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>
Hinweis: Eigentlich ist es eine Möglichkeit, es zu tun, die ich es wie ein Gefühl, hacken statt der richtigen Weg, um es zu erledigen: das ist eine Schaltfläche in b Dokument erstellen, und binden Sie dann mit angularjs ng-klicken. Danach ein Dokument jquery "Trigger" klicken Sie auf die Schaltfläche.
Nur eine kurze Notiz. Denken Sie daran, dass Sie normalerweise nicht mit einem iFrame und der übergeordneten Seite kommunizieren können, es sei denn, sie befinden sich in derselben Domäne. Es gibt Möglichkeiten, es zu tun, aber Sie können nicht nur direkt auf sie zugreifen. Nur damit Sie später nicht auf dieses Problem stoßen :) –
Ja, es gibt dieselbe Domain und dasselbe Projekt. Ich kann das JS-Objekt und die Variable nicht richtig manipulieren. Ich frage mich, ob jemand eine bessere Idee hat. – Stupidfrog