2016-07-07 4 views
0

Мой UI-маршрутизатор настройки следующим образом:AngularJS UI Router кэширует templateUrl, MVC контроллер не называется

var editMe = { 
     name: 'edit.editme', 
     url: '/users/edit/:Id', 
     parent: edit, 
     templateUrl: function (params) { 
      return '/users/edit/' + params.Id; 
     }, 
     controller: 'EditMeController' 
    } 

Это вызывает метод действий по моей MVC контроллер с правильным Id, который возвращает информацию о пользователе. После того, как я изменил некоторые значения, я хочу снова перейти к этому пользователю. Теперь templateUrl теперь кэшируется, и мой метод контроллера MVC не получает вызов снова, в результате чего возвращаются устаревшие данные. Любая идея о том, как я могу предотвратить это кеширование или убедиться, что метод действия MVC снова вызван?

Thanks

ответ

0

Хорошо, нашел решение. templateUrl получает кеширование после первой загрузки, после чего контроллер MVC не будет снова вызван.

Использование templateProvider и $ http.get решает это:

var editMe = { 
     name: 'edit.editme', 
     url: '/users/edit/:Id', 
     parent: edit, 
     templateProvider: function ($stateParams, $http) { 
      return $http.get('/users/edit/' + $stateParams.Id) 
       .then(function (result) {       
        return result.data; 
       }); 
     },    
     controller: 'EditMeController' 
    }  

в $ http.get обеспечивает метод контроллера MVC вызывается каждый раз, что приводит к 'свежим' HTML возвращается для отображения.

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