angular load template from url and compile inside div

前端 未结 3 1934
野性不改
野性不改 2021-02-02 13:46

As I\'m new to Angular JS I was wondering how could I load an external template and compile it with some data into the targeted div.

For instance I have thi

相关标签:
3条回答
  • 2021-02-02 14:19

    in Angular there's 2 ways of using template (at least 2 ways that i know about):

    • the first using an inline template (in the same file) with this syntax:

      <script type="text/ng-template">
          <img ng-src="{{thumb}}">
      </script>
      
    • the second one (what you want) is external template:

      <img ng-src="{{thumb}}">
      

    so what you need to do is to remove the script part from your template and then use the ng-include in the wanted div like this:

    <div ng-include="'templates/test.php'"></div>

    need to have double quotes and single quotes to work. Hope this helps.

    0 讨论(0)
  • 2021-02-02 14:19

    Using $templateRequest, you can load a template by it’s URL without having to embed it into your HTML page. If the template is already loaded, it will be taken from the cache.

    app.controller('testCtrl', function($scope, $templateRequest, $sce, $compile){
        // Make sure that no bad URLs are fetched. If you have a static string like in this
        // example, you might as well omit the $sce call.
        var templateUrl = $sce.getTrustedResourceUrl('nameOfTemplate.html');
    
        $templateRequest(templateUrl).then(function(template) {
            // template is the HTML template as a string
    
            // Let's put it into an HTML element and parse any directives and expressions
            // in the code. (Note: This is just an example, modifying the DOM from within
            // a controller is considered bad style.)
            $compile($("#my-element").html(template).contents())($scope);
        }, function() {
            // An error has occurred here
        });
    });
    

    Be aware that this is the manual way to do it, and whereas in most cases the preferable way would be to define a directive that fetches the template using the templateUrl property.

    0 讨论(0)
  • 2021-02-02 14:21

    Let's say I have this index.html:

     <!doctype html> <html lang="en" ng-app="myApp">
            <body>
                <script src="tpl/ng.menu.tpl" type="text/ng-template"></script>   
                <mainmenu></mainmenu>       
                <script src="lib/angular/angular.js"></script>
                <script src="js/directives.js"></script>
            </body> 
    </html>
    

    And I have a template file "tpl/ng.menu.tpl" with only these 4 lines:

    <ul class="menu"> 
        <li><a href="#/view1">view1</a></li>
        <li><a href="#/view2">view2</a></li>
    </ul>
    

    My directives mapping "js/directives.js":

    angular.module('myApp',['myApp.directives']);
    var myModule = angular.module('myApp.directives', []);
    
    myModule.directive('mainmenu', function() {
        return { 
            restrict:'E',
            replace:true,
            templateUrl:'tpl/ng.menu.tpl'
        }
    });
    
    0 讨论(0)
提交回复
热议问题