javascript之AngularJS:打开新窗口并维护双向数据绑定(bind)

kerrycode 阅读:12 2024-11-01 17:39:52 评论:0

我想打开一个新的浏览器窗口,其中包含 Angular $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') 它会起作用。如果可能的话,有人可以告诉我如何在不使用指令的情况下正确绑定(bind)数据吗?

请您参考如下方法:

你可以追加到带有绑定(bind)的主体编译元素,比如

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

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

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

Sample JSFiddle


标签:JavaScript
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号