AngularJS UI路由器缓存templateUrl,未调用MVC控制器

时间:2016-07-07 12:41:55

标签: angularjs model-view-controller

我的ui-router设置如下:

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

这会在我的MVC控制器上调用一个Action方法,并使用正确的Id返回用户信息。在我更改了某些值后,我想再次导航到此用户。现在缓存了templateUrl,并且不会再次调用我的MVC控制器方法,从而导致返回过时的数据。有关如何阻止此缓存或确保再次调用MVC操作方法的任何想法?

由于

1 个答案:

答案 0 :(得分: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返回显示。