2016-03-01 66 views
0

我有一个小向导。提交表单后,我创建了一个按钮来启动一个新的。转到页并重新载入Javascript/Angular

问题是我需要清除缓存,因为我使用UI-router来调用不同的页面,然后使用表单控制器来检查每个页面(或步骤)是否有效。我不能做一个简单的

window.location.reload(true); 

因为控制器然后只是返回一个空白页。如果我做

window.location.href = '#/form/start'; 

缓存不清除,用户能够绕过安全防护。

我试过使用它们,但缓存仍然存在;

$scope.beginNew = function() { 
    window.location.reload(true); 
    window.location.href = '#/form/start'; 
}; 

我能做些什么去一个页面然后发出重新加载?

回答

1

尝试增加cache: falseapp.js或任何你要添加你的状态,例如:

.state('home', { 
     url: '/home', 
     cache: false, 
     templateUrl: 'templates/home.html', 
     controller: 'HomeCtrl' 
    }) 
+0

这不会完全禁用缓存吗?我想清除它后,用户点击重新启动按钮与ng点击 – HenrikM

+1

我不认为有,或者至少我不熟悉重新加载页面时使用ui路由器的方式'。也不完全确定你在你的应用中做了什么,但是如果你将你的状态设置为'cache:false',那么是的,它将完全禁用该缓存状态。但如果你使用服务,这不会是一个问题。每当您导航到不同的状态时,控制器都会使用服务中的数据重新初始化,但服务中的数据将保持不变。所以当你点击'beginNew()'时,你可以'重置'你的服务中的值。 –

0

我完全不知道是否有任何冗余的这个代码,但一些试用后和错误这似乎工作;

将$窗口添加到控制器。

然后这个;

$scope.beginNew = function() { 
    $scope.formData = {}; 
    window.location.href = '#/form/test'; 
    $window.location.reload(); 
    $state.reload(); 
}; 

$ state.reload可能是多余的或$ window.location.reload();可能。

+0

我认为'$ state.reload()'是多余的。 –

相关问题