【发布时间】:2016-06-26 03:26:59
【问题描述】:
我们有一个使用 ui-router AngularJS 模块的 ASP.NET MVC 5 应用程序。
当我们回到已经加载的状态时,它总是显示旧数据,直到我们进行整页刷新。
例如:
- 用户点击“查看个人资料”,我们显示“查看个人资料”状态,显示个人资料的页面
- 用户点击“编辑配置文件”,我们显示“编辑配置文件”状态,一个包含编辑配置文件字段的页面
- 用户进行更改并单击“保存”,然后将其移回“查看配置文件”状态
- “ViewProfile”状态加载时,仍会显示编辑前的旧数据
我们如何强制 ui-route 在加载任何状态时提取新数据?
角度配置
var app = angular.module("MyApp", ['ngIdle', 'ui.router'])
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
// Configure client-side routing
$locationProvider.hashPrefix("!").html5Mode(true);
$urlRouterProvider.otherwise("/");
$stateProvider
.state('Home', {
url: '/',
views: {
"mainContainer": {
templateUrl: function (params) { return 'Home/Index'; }
}
}
})
.state('ProfileManagement', {
url: '/ProfileManagement-{action}',
views: {
"mainContainer": {
templateUrl: function (params) { return 'ProfileManagement/' + params.action; }
}
}
})
}]);
我们是如何进行过渡的
$state.go(stateName, { action: actionName }, { reload: true, inherit: false, notify: true });
使用解决方案编辑 由于所有功能都是使用 jQuery 编写的,因此我们不能使用 Angular 控制器来控制数据。我们的解决方案是使用以下代码完全禁用 Angular 模板缓存:
app.run(function ($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function () {
$templateCache.removeAll();
});
});
【问题讨论】:
-
老问题,但有同样的问题。我添加了您的代码,但这次我丢失了所有全局信息。有什么想法吗?
标签: angularjs asp.net-mvc angular-ui-router angularjs-routing