2016-11-30 6 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

このテキストを解析する2つの方法を示す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をdata変数の正確な値を保持するように設定しているので、innerText/textContentを呼び出すことができます。

最初の結果はあなたが望むものに少しばらつきますが、 '℃'のための別の行はありません。

セカンドattemp

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

あなたが期待するように、この1は、3行になります。 $ timeoutを利用するとAngularはまずすべてをダイジェストしてから、ng-bind-htmlディレクティブでマークされたdiv#iCanHaveAnIdに行き、その内容を取得します。

これらの戦略のうちの1つがお役に立てば幸いです。

+0

DOMでJSを使う必要がないのであれば、ありがとう、私は好きですが、他のオプションはないと思います –

関連する問題