2016-10-10 9 views
0

У меня есть следующие состояния UI-маршрутизатор для одного из моих закладок:Угловой UI-маршрутизатор скрытого параметр контроллера MVC

$stateProvider 
     .state('systems', { 
      url: '/Tabs/System', 
      templateUrl: function ($stateParams) { 
       return ('/Tabs/Systems/IndexNoLayout') + (typeof $stateParams.CustomerName === 'undefined' ? '' : '/' + $stateParams.CustomerName); 
      }, 
      params: { CustomerName: '' }, 
      controller: 'systemCtrl' 
     }); 

Ссылка на эту вкладку:

<a ui-sref="systems({CustomerName: 'dummyCustomer'})"> 
    Save state 
</a> 

и контроллер MVC с необязательным параметром:

public ActionResult IndexNoLayout(string CustomerName){...} 

Этот параметр затем используется в моем представлении MVC с использованием Razor. Приведенный выше код работает. Но я хотел бы, чтобы мое определение templateUrl следующим образом:

templateUrl: '/Tabs/Systems/IndexNoLayout' 

Таким образом, я мог бы легко удалить $ templateCache на $ stateChangeStart для этого углового зрения:

$templateCache.remove(fromState.templateUrl); 

Можно ли это сделать?

ответ

0

This SO post helped me solve my problem.

Таким образом, мое решение:

$stateProvider 
     .state('systems', { 
      url: '/Tabs/System',    
      templateUrl:'/Tabs/Systems/IndexNoLayout', 
      params: { CustomerName: '' }, 
      controller: 'systemCtrl'    
     }); 

В моем $ stateChangeStart:

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {    

     if (toState.name == "systems") { 
      toState.templateUrl = ('/Tabs/Systems/IndexNoLayout' + (typeof toParams.CustomerName === 'undefined' ? '' : '/' + toParams.CustomerName)); 
     } 

     $templateCache.remove(toState.templateUrl); ...}); 
Смежные вопросы