2017-10-28 67 views
4

我正在研究java和angularjs應用程序。 我有一個HTML頁面迭代對象並在頁面上顯示值。js代碼獲取動態生成的div ID

的html代碼:

<div id="{{value.pageIndex}}" ng-repeat="(key, value) in employees" class="myDivClass"> 
    <div> 
     <h1><font color="red"> {{value.pageHeader}}</font></h1> 
    </div> 
    <div> 
     <h1> {{value.pageIndex}}</h1> 
    </div> 
    <div>text from html page</div> 
</div> 

我不應該附上另一分區內上面的html代碼,因爲它會辜負我的其他情形在我的應用程序。

我想將上面的html內容導出爲PDF,當用戶點擊一個按鈕時,問題是當我試圖從html頁面獲取值,如下面的js代碼所示,只有第一次迭代的數據被導出到哪裏因爲我希望將整個數據導出到PDF。

JS代碼:

$scope.export = function() { 
    var pdf = new jsPDF('landscape'); 
    source = $('.one1'); 
    pdf.addHTML(source, 0, 0, { 
     pagesplit: true 
    },function(dispose){ 
     pdf.save('test.pdf'); 
    }); 
} 

請找到出現上述情況的演示:https://plnkr.co/edit/6jNIu5c26ACeTPsfACX2?p=preview

如何通過動態任何建議生成的ID對JS代碼和導出整個HTML數據PDF ?有沒有辦法將動態生成的ID傳遞給js代碼並將整個數據導出到PDF中。

PS:我不應該把上面的html代碼放在另一個div裏面,因爲它會在我的應用程序中失敗我的其他場景。

回答

0

使用類myDivClass來獲取您的數據,而不是使用id屬性。

您可以使用jQuery .each()來獲取所有數據。

添加附加源DIV的HTML

<body> 
    <div ng-controller="listController"> 
     <button ng-click="export()">export</button> 

    <div id="{{value.pageIndex}}" ng-repeat="(key, value) in employees" class="myDivClass"> 
    <div> <h1><font color="red"> {{value.pageHeader}}</font></h1> </div> 
    <div><h1> {{value.pageIndex}}</h1></div> 
    <div>text from html page</div> 
    </div> 

    </div> 
    <div id="append-source"></div> 
</body> 

使用這個div在JavaScript

$scope.export = function() { 
    var pdf = new jsPDF('landscape'); 
    var source = $('#append-source'); 
    $('.myDivClass').each(function(){ 
     var html = $(this); 
     source.append(html); 
    }); 
    console.log(source); 
    pdf.addHTML(
      source, 0, 0, { 
       pagesplit: true 
      }, 
      function(dispose){ 
       pdf.save('test.pdf'); 
      } 
    ); 
    } 
+0

可否請您修改https://plnkr.co/edit/6jNIu5c26ACeTPsfACX2?p=創建PDF預習。我剛剛更新了我上面的帖子中的鏈接,謝謝。 – user8838953

+0

@ user8838953對不起......我從來沒有使用過沉重的東西,但我認爲你快到了。我認爲你只需要將source = $('。myDivClass')更改爲source = $('。myDivClass')。each(); –

+0

我用,但出現錯誤,它說'不能讀取未定義的屬性調用' – user8838953