2016-07-22 100 views
0

使用函数ContentService.getQuestions(),我得到一个带有'Type'属性的JSON。此属性类型可以是“DevOps”或其他。 如果Type属性包含字符串'DevOps',我想加载一个不同的模板。如果它不是'Devops',我想加载一个不同的模板。基于JSON响应的动态路由angularJS

代码:

function configureRouting($routeProvider) { 
    var tempUrl = ''; 

    $routeProvider 
     .when('/form', { 
      resolve: { 
       dataService: function (ContentService) { 
        var questions = ContentService.getQuestions(); 
        var resolved = Promise.resolve(questions); 
        resolved.then(function (q) { 
         console.log(q.Type); 
         if (q.Type === 'DevOps') { 
          tempUrl = 'components/devops/template.html'; 
         } else { 
          tempUrl = 'components/hr/template.html'; 
         } 
        }); 
        return questions; 
       } 
      }, 
      controller: 'FormController', 
      controllerAs: 'frmCtrl', 
      templateUrl: tempUrl 
     }) 
     .otherwise({ 
      redirectTo: '/form' 
     }); 
} 

在代码中的tempUrl行得改变,因为templateUrl:tempUrl采用原始变量,谁心不是改变。 所以我需要一个解决方案,我可以根据我的JSON属性加载不同的模板。

回答

0

可以使用函数返回模板URL像这样...

function configureRouting($routeProvider) { 
     $routeProvider 
      .when('/form', {      
       controller: 'FormController', 
       controllerAs: 'frmCtrl', 
       templateUrl: function(ContentService){ 
        var tempUrl = ''; 
        var questions = ContentService.getQuestions(); 
         var resolved = Promise.resolve(questions); 
         resolved.then(function (q) { 
          console.log(q.Type); 
          if (q.Type === 'DevOps') { 
           tempUrl = 'components/devops/template.html'; 
          } else { 
           tempUrl = 'components/hr/template.html'; 
          } 
         }); 
         return tempUrl; 
       } 

      }) 
      .otherwise({ 
       redirectTo: '/form' 
      }); 
    } 
+0

然后我得到一个类型错误:ContentService.getQuestions不是一个函数。 – HhK