繁体   English   中英

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

[英]AngularJS: open new window and maintain two-way data binding

我正打算在里面打开一个带有角度$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

以上内容不会返回窗口中的任何数据。 它像这里的指令一样工作

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

您可以使用绑定附加到body编译的元素

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

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

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

示例JSFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM