2016-02-07 17 views
0

我已經在angularJS中創建了一個指令,如<print-note print-data='printData' id='notePrintDiv'></print-note>這個指令將採取一些對象併爲打印創建一個格式化的html,但我不想在我的主html中顯示格式化的html想要打印格式化的HTML。所以我正在跳轉,如果在angularJS中有任何方式,我只需創建元素並將範圍對象傳遞給它,如angular.element("<print-note print-data='printData' id='notePrintDiv'></print-note>");或任何其他方式並獲取其innerHTML。angularJS在內存中執行指令並創建innerHTML

P.S.我也可以使用指令模板的外部html作爲display: none來達到同樣的效果,但這看起來有點怪異。

+0

取決於您如何設置打印。使用媒體打印CSS是非常正常的HTML打印方法。如果從不同的窗口打印,它會不同 – charlietfl

回答

1

$compile服務應該可以做到這一點。將其注入控制器,您可以訪問示波器(使用printData)。

var element = $compile('<print-note print-data="printData" id="notePrintDiv"></print-note>')($scope); 
+1

$編譯也是運行時添加和額外處理。在角度應用中,簡單的事情可以讓應用更快地運行 –

+0

如果您直接在HTML中放入' ...',並用'ng-show'將其隱藏起來,它必須被編譯和鏈接。我覺得隱藏它就是「哈克」解決方案。不同之處在於,你是對的,這種方式必須每次編譯/鏈接。無論如何,這只是一個可能的做法。提問者將決定哪一個適合他/她。 –

+0

Possibites始終存在,但必須選擇適合環境的環境我在技術上相信AngularJS會非常緩慢 - 這就是爲什麼我找到並提出性能優先解決方案的原因。 :) –

0

我有一個AngularJS應用實現samething - 我保持打印按鈕的指示和我保持id因爲這是有針對性地進行打印,並保持該div/htmlng-show=falsediv或HTML塊。我認爲這是完成所需任務的正確方法之一。