3

i have this situation:

<somebutton></somebutton>

...

app.directive("somebutton", function(){
    return {
        restrict: "E",

        scope: {
          // not sure what i can do here
        },

        template: '<button ng-click="loadTemplate()" type="button">Text</button>',

        link: function(scope, element){
            scope.loadTemplate = function(){

                //TODO: append "home.html" template inside body directive
            }
        }
    }
});

...

<script type="text/ng-template" id="home.html">
    <div>home</div>
</script>

...

<div body ></div>

Other way of doing this could be to have the button in html instead of an template

<button ng-click="loadTemplate()" type="button">Text</button>

then maybe have a controller that has the loadTemplate() method that loads the template

but im not sure how this can be done.

Confusing? yes :)

Any ideas on this issue?

thanks

1
  • I recently started with Angular and sure doing things correctly is confusing for me ... consider like Angular HTML is considered as template so using other templating tools with Angular not sure... looking forward for some answers... Commented Mar 14, 2013 at 6:43

1 Answer 1

8

Take a look at ngInclude in case it fits your needs. You can bind it to a template url to dynamically change the loaded template.

Check out the documentation for an example as well as this simple plnkr.

<body>
  <button ng-click="template='home.html'">Home</button>
  <button ng-click="template='home2.html'">Home 2</button>
  <div ng-include src="template"></div>
</body>
<script type="text/ng-template" id="home.html">
    <div>loaded home</div>
</script>
  <script type="text/ng-template" id="home2.html">
    <div>loaded home 2</div>
</script>

Also note that most AngularJS apps are likely using the built in routing to load appropriate controllers and views based on the url. See the tutorial and documentation/example on $route for more information.

Sign up to request clarification or add additional context in comments.

3 Comments

this will switch the templates alright. I am looking to load/append a template to a div/directive. My question might throw people a bit off
Ah in that case maybe the $compile documentation will help.
For me nothing happen

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.