我需要获取文本,例如在ng-bind-html
上格式化,但是在角度变量中。有点难以用文字解释,看看这段代码是否易于理解并且小提琴:
var testApp = angular.module('TestApp', []);
testApp.controller('TestController', function($scope, $sce) {
$scope.wrappedValue = $sce.trustAsHtml('asdf<div>°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 :(得分:0)
我制作了一个example on CodePen.io,它显示了两种不同的方式来解析此文本。
首次尝试:
var data = 'asdf<div>°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,并获取其内容。
希望其中一种策略可以帮到你。