2016-03-23 12 views
0

私はangle-ui-routerを使って角度のあるAppを持っています。
ページ私は上品な外観を作りました。 私はhtmlのスナップショットを取ってpdfを作成しようとしています。
これを行うには、私はPhantomを使用しています。NodeとAngular-ng-repeatがレンダリングされていないPhantom Js

PDFを正常にトリガーして作成することはできますが、HTMLのng-repeatセクションはレンダリングしません。

マイHTML:

<div>{{vm.hello}}</div> 
<div class="row"> 
    <div class="col-xs-2">Heading</div> 
</div> 
<div class="row" ng-repeat="record in vm.records"> 
    <div class="col-xs-2">Space</div> 
    <div class="col-xs-2" ng-bind="record.id"></div> 
</div> 

私のコントローラはvm.recordsを移入する負荷にトリガします。 vm.helloはハードコーディングされており、うまく描画されます。
ng-repeatロードには何もありません。

マイノードjsのコード

var phantom = require('phantom'); 
function pdf(req, res) { 
    console.log('pdf function entered'); 
    var url = "http://myapp.com/page"; 
    phantom.create().then(function(ph) { 
    ph.createPage().then(function(page) { 
     page.viewportSize = { 
     width: 1400, 
     height: 1024 
     }; 

     page.property('onLoadFinished', function(status) { 
     console.log("Load Finished with status " + status); 
     }); 

     page.open(url).then(function(status) { 
      page.render('test.pdf', { 
      format: 'pdf', 
      quality: '100' 
      }).then(function() { 
      console.log("File Created"); 
      page.close(); 
      ph.exit(); 
      }); 
     }); 
    }); 
    }); 
    res.status(200).send(); 
} 

誰もがNG-repeatが動作しません理由としていくつかの光を当てることができますか?私は他の質問/回答に基づいて遅延を追加しようとしましたが、うまく動作していないようです。

+0

どのPhantomJSバージョンを使用しますか? 'onConsoleMessage'、' onError'、 'onResourceError'、' onResourceTimeout'イベント(古い[例](https://gist.github.com/artjomb/4cf43d16ce50d8674fdf#file-3_phantomnodeerrors-js)に登録してください。まったく同じように動作しません)。多分エラーがあるかもしれません。 –

答えて

0

あなたのコントローラでは、あなたがレンダリングが次はあなたがそれを呼び出す避けるために、この

$timeout(function(){ 
      window.callPhantom(); 
      return; 
}) 

のように$タイムアウトの内側にそれを呼び出す必要がされて

を完了したときに

window.callPhantom(); 

を呼び出す必要があります拘束前に

関連する問題