访问AngularJS中的服务内的HTML页面

时间:2017-12-07 13:24:05

标签: angularjs jspdf

我想访问服务中的特定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页面的内容。

2 个答案:

答案 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");