在ng-bind-html中获取打印值

时间:2016-11-30 15:25:46

标签: javascript angularjs

我需要获取文本,例如在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/

感谢您的关注。谢谢

1 个答案:

答案 0 :(得分: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,并获取其内容。

希望其中一种策略可以帮到你。