2016-07-22 3 views
0

С помощью функции ContentService.getQuestions() я получаю JSON со свойством «Тип». Этот тип свойства может быть «DevOps» или что-то еще. Если свойство Type содержит строку DevOps, я хочу загрузить другой шаблон. И если это не «Devops», я хочу загрузить другой шаблон.Динамическая маршрутизация angularJS на основе ответа JSON

Код:

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 принимает исходную переменную, которая Isnt изменилась. Так что мне нужно решение, где я могу загрузить другой шаблон на основе моего свойства 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

Тогда я получаю TypeError: ContentService.getQuestions не является функцией. – HhK

Смежные вопросы