2016-07-07 111 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返回来显示。