2014-08-28 66 views
2

我正在製作一個指令,用範圍數據打印視圖組件。我的問題是與iframe,我不能編譯這個。模板注入iframe,但$ compile不綁定範圍數據。

我的代碼

angular.module('app').directive('printable', ['$templateCache', '$compile', function ($templateCache, $compile) { 
return { 
    restrict: 'EAC', 
    scope: true, 
    link: function (scope, element, attrs) { 
     var iframe; 
     var html = $templateCache.get(attrs.printView); 
     var elm = document.createElement('iframe'); 

     elm.setAttribute('class', 'print-frame'); 
     elm.setAttribute('style', 'display: none;'); 

     element.parent().append(elm); 

     iframe = element.parent().find('.print-frame')[0]; 

     var compiled = $compile(html); 
     write(html); 

     function write(value) { 
      var doc; 
      if (iframe.contentDocument) { // DOM 
       doc = iframe.contentDocument; 
      } else if (iframe.contentWindow) { // IE win 
       doc = iframe.contentWindow.document; 
      } else { 
       alert('Wonder what browser this is... ' + navigator.userAgent); 
      } 

      doc.write(value); 
      doc.close(); 
     } 

     element.bind('click', function (event) { 
      if (window.navigator.userAgent.indexOf("MSIE") > 0) { 
       iframe.contentWindow.document.execCommand('print', false, null); 
      } else { 
       iframe.contentWindow.focus(); 
       iframe.contentWindow.print(); 
      } 
     }); 
    } 
}; 
}]); 

在此先感謝。

回答

1

嘗試這樣

var compiled = $compile(html)(scope); 
+0

我試過 VAR編譯= $編譯(HTML)(範圍); 和 var compiled = $ compile(html); var elm =編譯(範圍); write(elm); 查看綁定繼續空:( – Daniel 2014-08-29 08:17:34

+0

@Daniel可能你把它在撥弄 – 2014-08-29 08:37:43

+0

我上傳一個例子與我的問題Plunkr:http://plnkr.co/edit/eZhDz8hIPjM6sjcnAOhz – Daniel 2014-08-29 08:45:00

相關問題