BinaryWasteland BinaryWasteland - 2 years ago 144
AngularJS Question

HTML not rendering on Salesforce using $sce and ng-bind-html

I am using Salesforce as the back end and my users can get some notifications that could contain an tag with a link to somewhere. This being said I have used $sce in the controller to do a function like this:

vm.to_trusted = to_trusted;
function to_trusted(html_code) {
return $sce.trustAsHtml(html_code);

In the front end I am using it as such:

<p ng-bind-html="vm.to_trusted(message.body)"></p>

An example of the returned message.body is

<a href="/#/app/profile">Click Here to Fill out your Profile</a>. It will allow you

On localhost this works awesome with the link being shown and not the tag. On Salesforce, this is not the case with the above being shown instead. Any ideas as to why this is not working?


Yes I do have ngSanitize included :)

Answer Source

The Salesforce @dispatch requests serialize text in an odd manner.

If the content of a Salesforce string is: '<a href="">Things</a>' you will see in Angular that you've received: &lt;a href=&quot;$quot;&gt;Things&lt;a&gt;

The solution I've found is, in your controller:

function to_trusted(html_code) {
  // Cause the &ltg; etc become '<'
  return $('<textarea />').html(html_code).text();

Because Salesforce.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download