我想访问服务中的特定HTML页面。目前,我已经在一个控制器内部创建了该函数,该控制器可以从其链接的HTML页面调用,但我想从多个页面访问该函数。因此,我希望服务或工厂能够从任何地方使用它。
在该功能中,我想要特定HTML页面的内容,但只有当我从该页面调用该功能时才能使用该内容。
这是我的功能。
$scope.downloadReport = function(type) {
var pdf = new jsPDF('p', 'pt', 'a4');
var source;
var options = {
pagesplit: true,
background: '#ffffff',
letterRendering: true
};
pdf.internal.scaleFactor = 2;
source = document.getElementsByClassName('complete-report')[0];
pdf.addHTML(source, options, function () {
pdf.save('report.pdf');
});
};
document.getElementsByClassName('complete-report')[0]; 它将从与控制器链接的HTML页面获取数据。
所以,我需要访问特定HTML页面的服务,以便我在那里使用该功能来获取特定HTML页面的内容。
答案 0 :(得分:0)
正如wprzechodzen所指出的,您不应直接在服务中访问HTML,而应该只传递source
变量。
但是,如果要在服务中访问HTML,则必须执行以下操作:
yourApp.controller('something', function($scope, $window, $document, yourServiceName){
yourServiceName.yourFunction($document)
})
yourApp.factory('yourServiceName', function(){
return {
yourFunction: function(doc){
//here you get $document
}
}
})
Here是$document
的文档
答案 1 :(得分:0)
您必须确保您尝试访问的DOM元素必须加载到DOM中。直到那时你什么都做不了。
您可以尝试为该特定dom元素提供id标记(例如elementID),并尝试访问如下所示。
var source = angular.element("#elementID");