2016-07-07 69 views
0

我的UI路由器的設置如下:AngularJS UI路由器緩存templateUrl,MVC控制器不叫

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

這就要求有正確的ID返回用戶的信息在我的MVC控制器的操作方法。在我更改了一些值後,我想再次導航到此用戶。現在templateUrl被緩存,並且我的MVC控制器方法不會再被調用,導致返回陳舊的數據。任何想法如何我可以防止這種緩存或確保MVC操作方法被再次調用?

謝謝

回答

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返回來顯示。