Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to parse the html which is embedded in a string inside a JavaScript object?

JsFiddle

<script>
  angular.module('module', []);

  angular.module('module').controller('hello', function($scope) {
    $scope.obj = {
      "text": "<u>HelloWorld</u>"
    };

  });

</script>

<body>

  <div ng-app='module' ng-controller='hello'>
    Current:{{obj.text}}

    <br>
    <br> Expected:<u>HelloWorld</u>
  </div>
</body>

I am trying to read an object stored in a JSON and then print it on my web page.

I have provided a link to the code above.

I am expecting the output to be a string "HelloWorld" which is underline.

ps:

  • I cannot edit the JSON
  • obj is the object that is being fetched, I could not share the JSON so i have used a hardcoded value.
like image 424
Adit A. Pillai Avatar asked Sep 29 '16 08:09

Adit A. Pillai


3 Answers

You can use ng-bind-html and ng-bind-html-unsafe for that kind of purpose. you have to include ngSanitize from angular-sanitize.

<p ng-bind-html="obj.text"></p>

The example is shown here

like image 190
Pradeepb Avatar answered Oct 10 '22 04:10

Pradeepb


You want to just use a regular expression like so:

$scope.obj.text =  $scope.obj.text.replace(/(<([^>]+)>)/ig,"");

Working fiddle here

like image 1
nikjohn Avatar answered Oct 10 '22 04:10

nikjohn


You need to use the angular-sanitize module:

<script src="path/to/installed/angular-sanitize/angular-sanitize.js"></script>

<script>
    angular.module("module", ["ngSanitize"]);

    angular.module('module').controller('hello', function($scope) {
        $scope.obj = {
            "text": "<u>HelloWorld</u>"
        };

    });

</script>

And your html:

<div ng-app='module' ng-controller='hello'>
    Current: <p ng-bind-html="obj.text"></p>

    <br>
    <br> Expected:<u>HelloWorld</u>
</div>
like image 1
devqon Avatar answered Oct 10 '22 05:10

devqon