AngularJS:打开新窗口并维护双向数据绑定

时间:2016-02-04 18:23:42

标签: javascript angularjs

我打算在里面打开一个带有角度$scope数据的新浏览器窗口:

<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这样的指令。

如果我append('hello world')它有效。有人可以告诉我如何在不使用指令的情况下正确绑定数据,如果可能的话吗?

1 个答案:

答案 0 :(得分:0)

您可以附加到带有绑定的正文编译元素,例如

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

或者你可以将html添加到body本身并编译它

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

Sample JSFiddle