Is it possible to load a template via AJAX request for UI-Router in Angular?

前端 未结 1 1564
执笔经年
执笔经年 2021-01-15 14:53

I know this might get an answer here, however that goes more for lazy loading implementation itself.

So, this is a typical UI-Router<

相关标签:
1条回答
  • 2021-01-15 15:24

    We should (in this case) use TemplateProvider. Small cite from doc:

    Templates

    TemplateUrl
    ... templateUrl can also be a function that returns a url. It takes one preset parameter, stateParams, which is NOT injected.

    TemplateProvider
    Or you can use a template provider function which can be injected, has access to locals, and must return template HTML, like this:

    $stateProvider.state('contacts', {
      templateProvider: function ($timeout, $stateParams) {
        return $timeout(function () {
          return '<h1>' + $stateParams.contactId + '</h1>'
        }, 100);
      }
    })
    

    And there is even more.

    We can use cooperation with really powerful

    $templateRequest

    In this Q & A (Angular UI-Router dynamic routing based on slug from API Ajax Call. Load view based on slug) we can see so simple templateProvider defintion

    .state('hybrid', {
        // /john-smith
        url: '/:slug',
        templateProvider: ['type', '$templateRequest',
          function(type, templateRequest) 
          {
            var tplName = "tpl.partial-" + type + ".html";
            return templateRequest(tplName);
          }
        ],
    

    and the result is also chached...

    There are some other links to similar Q & A, including working examples

    • Angular UI Router: decide child state template on the basis of parent resolved object
    • Angular and UI-Router, how to set a dynamic templateUrl
    0 讨论(0)
提交回复
热议问题