2016-07-22 36 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