2016-11-30 45 views
1

我需要獲取文本,例如在ng-bind-html上格式化,但使用角度變量。是有點難以解釋文本形式,看是否是在此代碼和小提琴理解:在ng-bind-html中獲取打印值

var testApp = angular.module('TestApp', []); 

testApp.controller('TestController', function($scope, $sce) { 
    $scope.wrappedValue = $sce.trustAsHtml('asdf<div>&deg;C<br />aaa</div>'); //this is my input 
    var data = $scope.wrappedValue; 
    console.log(data); //here I want to get printed: "asdf\n°C\naaa" 
}); 

http://jsfiddle.net/r565nb2p/3/

我很欣賞你注意閱讀本。謝謝

+0

您可以解析'wrappedValue'來刪除HTML標籤並僅保留文本。 – Mistalis

回答

0

我做了一個example on CodePen.io,它顯示了兩種不同的方法來解析這個文本。

第一次嘗試:

var data = 'asdf<div>&deg;C<br />aaa</div>'; 
var tempDiv = document.createElement('div'); 
tempDiv.innerHTML = data; 
console.log(tempDiv.innerText || tempDiv.textContent); 

正如你可以在此嘗試我用的是永遠不會添加到DOM一個tempDiv看到。但是,由於我們設置了innerHTML來保存數據變量的確切值,所以我們可以調用innerText/textContent。

第一個人的結果對你想要的有一點分歧,它沒有'°C'的單獨行。

二學嘗試

$timeout(function() { 
    var iCanHaveAnId = document.getElementById('iCanHaveAnId'); 
    console.log(iCanHaveAnId.innerText || iCanHaveAnId.textContent); 
}); 

上三行這一個結果,如您所願。它利用$ timeout優先允許Angular首先消化所有東西,然後轉到使用ng-bind-html指令標記的div#iCanHaveAnId並獲取其內容。

希望這些策略中的一個可以幫助你。

+0

好,謝謝,我寧願如果不必在DOM中使用JS,但我相信沒有其他選擇 –