2016-02-04 75 views
3

我期待打開一個新的瀏覽器窗口裏面角$scope數據:AngularJS:打開新窗口,並保持雙向數據綁定

<div ng-app="test" ng-controller="testController"> 
<input type="text" ng-model="var" /> 
    <button ng-click="openWindow()">push!</button> 
</div> 

var test = angular.module('test', []); 

test.controller('testController', ['$compile', '$scope','$window', function($compile, $scope, $window) { 
    $scope.var = 'hello' 
    $scope.openWindow = function() { 
     $scope.window = $window.open('', '_blank', 'width=500,height=400'); 
     angular.element($scope.window.document.body).append($compile($scope.var)($scope)); 
    }; 
}]); 

JSFIDDLE

以上不返回任何數據在窗口中。它的工作方式如in here

If I append('hello world') it works。有人能告訴我如何在不使用指令的情況下正確綁定數據,如果這甚至可能的話?

+0

嘗試讀取錯誤在控制檯中。您沒有提及新窗口,小提琴中的代碼與代碼 – charlietfl

+0

不同@charliet fl道歉 - 小提琴更新 – greener

+1

試試這個... http://jsfiddle.net/d8atdw0t/56/更高級的html只需在編譯後拔出字符串所需的html – charlietfl

回答

0

可以追加身體編譯元素與結合,像

$compile('<div>{{var}}</div>')($scope) 

,或者你可以添加HTML身體本身並編譯

$compile(angular.element($scope.window.document.body).html('{{var}}'))($scope); 

Sample JSFiddle