Asked  7 Months ago    Answers:  5   Viewed   26 times

I'm trying to use $sanitize provider and the ng-bind-htm-unsafe directive to allow my controller to inject HTML into a DIV.

However, I can't get it to work.

<div ng-bind-html-unsafe="{{preview_data.preview.embed.html}}"></div>

I discovered that it is because it was removed from AngularJS (thanks).

But without ng-bind-html-unsafe, I get this error:

http://errors.angularjs.org/undefined/$sce/unsafe

 Answers

88
  1. You need to make sure that sanitize.js is loaded. For example, load it from https://ajax.googleapis.com/ajax/libs/angularjs/[LAST_VERSION]/angular-sanitize.min.js
  2. you need to include ngSanitize module on your app eg: var app = angular.module('myApp', ['ngSanitize']);
  3. you just need to bind with ng-bind-html the original html content. No need to do anything else in your controller. The parsing and conversion is automatically done by the ngBindHtml directive. (Read the How does it work section on this: $sce). So, in your case <div ng-bind-html="preview_data.preview.embed.html"></div> would do the work.
Tuesday, June 1, 2021
 
Zulakis
answered 7 Months ago
94

Just Create a Filter:

app.filter("trustUrl", ['$sce', function ($sce) {
        return function (recordingUrl) {
            return $sce.trustAsResourceUrl(recordingUrl);
        };
    }]);

In View File:

<audio src="{{Your_URL | trustUrl}}" audioplayer controls></audio>
Sunday, June 13, 2021
 
Sendy
answered 6 Months ago
51

According to some other Stackoverflow QA you can pre-fix your angularjs attributes with the data- attribute.

So ng-app would become data-ng-app. This would mean that your markup is valid html5 and still work with angularjs.

See these questions for reference.

AngularJS tags attributes

Can I use another prefix instead of `ng` with angularjs?

Saturday, August 14, 2021
 
Gabriel Tortomano
answered 4 Months ago
33

I'm in the process of learning hk2 coming from Guice. Honestly I am still in the weeds a little with the complexity of hk2 vs the simplicity of guice. I did find this solution to work for me and it is much similar to the Guice builder. This did seem a little more straight forward than having to use the ServiceLocatorUtilitiesclass.

public class IOCMockRestModule extends AbstractBinder
    bind(20000).to(Integer.class).named("MAX_REQUEST_TIMEOUT");
}

And to use the injected value:

@Inject
protected CustomerResource(ICustomerProvider customerProvider, @Named("MAX_REQUEST_TIMEOUT") int maxTimeoutMillis) {
Tuesday, November 2, 2021
 
Jauco
answered 1 Month ago
40

You can't use constructor injection with objects that are not created by Ninject (e.g. deserialized objects). But you can use property injection. Just call kernel.Inject(obj)

One question that remains is why you want to inject those objects. Normally, you don't want to use depedency injection on data container objects. In a proper design they don't have any dependency on services. The operations that need to be done on the services are done by the owner of the data container objects. I recommend to consider a refactoring of your design.

Saturday, November 13, 2021
 
Ouerghi Yassine
answered 4 Weeks ago
Only authorized users can answer the question. Please sign in first, or register a free account.
Not the answer you're looking for? Browse other questions tagged :  
Share