Replicating Script Behavior in Templates - javascript

I am currently trying to build a website using a header.html template included in an index.html file.
I currently have the template working. I had been using jQuery Rotate (http://jqueryrotate.com/) to make the logo flip upside down on a mouseover.
Since Angular won't allow <script> tags in templates for security reasons I was wondering what the standard practice is to replicate script behaviors. I can still use ng-mouseover and ng-mouseleave. Is there a convenient way to call the jQuery Rotate functions from my controller?

Related

Can I use buttons to choose what is rendered on my handlebars main layout?

I'm trying to use handlebars for the first time and I'm used to normal html and javascript with location.assign() and such. Am I able to use buttons in the html to choose what handlebars content is rendered? Or another thing, is it possible to use standard html like index.html, home.html first and then have a way to switch to a handlebars template when I click a certain button? Kinda like location.assign() but just switching to a handlebars page instead
I'm new to this, I'm just wondering what I'm able to do.

Embed JavaScript and let it use local CSS

I've created a simple html web page using bootstrap.
I've also created a "nice looking" form with Svelte that also uses bootstrap.
The svelte form is hosted on another server/domain. I embed it on my html page by placing a -Tag and than placing my custom html tag where I want to see it.
Embedding the form is no problem, technically everything works but: I would like to remove the bootstrap library from the component because otherwise I load bootstrap twice.
When I remove bootstrap from the form, it loses its style. Using the "refer" option in is no solution.
Do you have any idea how I can make the embeded form use the bootstrap css from the page that it is embeded on?
I just found out that the problem is the so called "Shadow DOM", which is used by Svelte. It protects the svelte component from being modified by global css.
At the moment there is no official way to disable the Shadow DOM :(

Prevent css and js inheritence in ascx

I have an application with only one aspx page (Default.aspx).
This page loads .ascx controls as needed.
All these controls are using the same JS and CSS file.
Now I want to apply Bootstrap on some of them. But I am scared that bootstrap will break some CSS and JS.
So I am thinking about wrapping each control in an Iframe (because what I know is:
Iframe blocks inheritance of CSS and JS).
Is my solution ok ?
Or Is there a way to know which CSS and JS is needed by each control?
thanks
My advice is that even if you're breaking your application markup into controls (ascx files), you should apply a consistent theme and serve just one bundle of CSS and one bundle of JS. This will help performance of your site as well as be easier to maintain. Also, it'll be easier to keep a consistent look and feel for your users.
So if you're going to use Bootstrap, use it everywhere. Write your JS functions such that they aren't dependent on a given markup, and so on.

Angular loading template inline

In an angular js 1.2.22 version code, I saw this in the HTML
<div class="mainContent" ng-include="content"> </div>
and in its corresponding controller, I see this.
$scope.content = 'templates/contents/home.html';
I see its making an Ajax call to load the template.
I am working on improving the speed of the content display and I did some optimizations like minifying the javascript code and minifying css
My doubt is how to make this inline - without making the Ajax call. So, that I could check if there is visible difference in speed of the content showing up for this template?
I tried the gulp-angular-templatecache to cache templates but, it did not work.
Is there any workaround for this so that I can make this template inline ?
What you're looking for is Angular's $templateCache.
Depending on your task runner, you might want to give gulp-angular-templatecache or grunt-angular-templatecache a try.

How to build a widget to embed in third-party websites using AngularJs?

I would like to create a angularjs widget that can be embedded in third-party websites with minimal code such as
<script src=mywidget.js type=...></script>
<div id="mywidgetContainer"></div>
or similar.
I found some resources such as this article for developing a widget using jquery http://alexmarandon.com/articles/web_widget_jquery/.
How would it be done using Angularjs? In what clever ways can angular features such as directives/views etc. be harnessed to this purpose? What are the gotcha's if any? Your thoughts/suggestions/opinions/experiences, please.
You should also keep in mind the possibility that the 3rd party website also uses angular,
and potentially a different version.
Check Multiple versions of AngularJS in one page
This is what seems to have worked for me. In the script I set the innerHTML property of the Container div to the angular view markup code. The key point is to use angular.$bootstrap to manually bootstrap the app after the page load. I did not see any particular value in creating a directive. A directive would need to be part of the view code that would still need to be assigned to the container using innerHTML.

Categories

Resources