gpt4 book ai didi

javascript - 使用 AngularJs 打印 Div 内容

转载 作者:行者123 更新时间:2023-11-28 03:55:35 25 4
gpt4 key购买 nike

在 AngularJs 应用程序中,我想在某些 on 事件中将生成的内容注入(inject)到 printDiv 中。此 printDiv 的样式为 using 且应仅在打印时显示。

下面是代码片段:

@media print {    
body > #printDiv{
display:block;
}
body > #screenContent{
display:none;
}
}
@media screen {
body > #printDiv {
display: none;
}
body > #printContent{
display:block;
}
}

在特定事件(ng-click)下,它会调用 Controller 上的函数 GenerateContent()

$scope.GenerateContent = function () {
$("#divOne").text(data.FirstName);
$("#divTwo").text(data.LastName);
...
$scope.Print();
}

在这里,我尝试使用纯 JS 获取先前注入(inject)的内容,然后使用 window.print() 打印,如下所示:

$scope.Print = function () {
var content = document.getElementById("printContent").innerHTML;
document.getElementById('printDiv').innerHTML = content;
window.print();
}

最后在 html 页面上的 div 结构如下:

<html>
<body>
<div id="screenContent">
// html content for screen only
</div>
<div id="printDiv"></div>
<div id="printContent">
<div id="divOne"></div>
<div id="divTwo"></div>
</div>
</body>
</html>

第一次尝试时,内容生成正确且打印良好。每次尝试都不会注入(inject)内容,它总是打印第一次尝试时生成的内容。

这是使用 AngularJs SPA 注入(inject)和打印 div 的正确方法吗?如何修复我的示例以按预期方式工作?

更新:

我尝试使用 ng-bind 而不是像这样使用 jquery

<div id="printContent" ng-controller="myController">
<div id="divOne" ng-bind="firstName"></div>
<div id="divTwo" ng-bind="lastName"></div>
</div>

和内部 Controller

$scope.firstName = data.FirstName;
$scope.lastName = data.LastName;

但这并没有向 dom 中注入(inject)任何东西。

我也尝试过使用 ng-model 而不是 ng-bind 也不起作用。

更新 2

myController
(function () {
"use strict";
app.controller('myController',
....
$http({
method: 'POST',
url: '/SomeService',
data: ....,
}).success(function (data) {
$scope.firstName = data.FirstName;
$scope.lastName = data.LastName;
}
});
...
}());

更新 3

<div id="printDiv">
<div id="printContent" ng-app="myApp" ng-controller="myController">
<div id="divOne" ng-bind="data.firstName"></div>
<div id="divTwo" ng-bind="lastName"></div>
</div>
</div>

我的 Controller 代码

angular.module('myApp', [])
.controller('myController', function ($scope) {
$scope.firstName: "Bob";
$scope.lastName: "Smith";
window.print();
});

我正在调用 window.print 打印 printDiv 中的内容,其中元素绑定(bind)到 Controller 属性,但这不起作用。当我查看 firebug 内容时,根本没有绑定(bind)(html 结构在 ng-bing 上看起来没问题,但没有实际内容绑定(bind)到该元素)。

我做错了什么?

最佳答案

无法从断开连接的点点滴滴中判断出偏离轨道的位置(例如,相对于其他所有内容,GenerateContent 位于何处?)但这是一个非常简单的 Controller 示例,它执行您的要求没有 jQuery:

DOM:

<div ng-app="foo">
<div id="printContent" ng-controller="demoController">
<div id="divOne" ng-bind="data.firstName"></div>
<div id="divTwo" ng-bind="data.lastName"></div>
</div>
</div>

Controller :

angular.module('foo', [])
.controller('demoController', function ($scope) {
$scope.data = {
firstName: "Bob",
lastName: "Smith"
};

})

https://jsfiddle.net/m10ojexn/

关于javascript - 使用 AngularJs 打印 Div 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com