您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Angular和UI-Router,如何设置动态templateUrl

Angular和UI-Router,如何设置动态templateUrl

就像在此问答中所讨论的:Angular UIRouter:基于父解析对象决定子状态模板,我们可以像这样

这可能是“来自服务器/数据库加载模板名称”的服务:

.factory('GetName', ['$http', '$timeout',
    function($http, $timeout) {
      return {
        get : function(id) {
          // let's pretend server async delay
          return $timeout(function(){
            // super simplified switch... but ...
            var name = id == 1
                  ? "views.view2.html"
                  : "views.view2.second.html"
                  ;
            return {templateName : name}; 
          }, 500);
        },
      };
    }
]);

然后,templateProvider定义将如下所示:

  views: {
    "page": {
      templateProvider: function($http, $stateParams, GetName) {

        // async service to get template name from DB
        return GetName
            .get($stateParams.someSwitch)
            // Now we have a name
            .then(function(obj){
               return $http
                  // let's ask for a template
                  .get(obj.templateName)
                  .then(function(tpl){
                      // haleluja... return template
                      return tpl.data;
               });      
            })

      },

代码应具有自我解释性。查看此答案及其插件获取更多详细信息

其他 2022/1/1 18:18:37 有459人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶