home.html是一个包含两个字段集的模板。 我使用ng-show在页面加载时使第一个字段集可见,当用户单击按钮时,其他字段集可见,第一个字段集隐藏。 这是通过使用变量'preview'来完成的(这是一个jsfiddle):
<div ng-app="app">
<div ng-controller="MainController">
<fieldset ng-show="!preview">
<p>This is fieldset 1</p>
<button ng-click="toggleIt()">Toggle</button>
</fieldset>
<fieldset ng-show="preview">
<p>This is fieldset 2</p>
</fieldset>
<a href="#" ng-click="returnIt()">Home</a>
</div>
</div>
和控制器类似:
angular.module('app', []).
controller('MainController', ['$scope', function ($scope) {
$scope.preview = false;
$scope.toggleIt = function(){
$scope.preview = true;
}
$scope.returnIt = function(){
location.reload();
}
}]);
在JsFiddle中它工作正常,但当我在我的角应用程序中使用'Home'链接时:
<a href="/">Home</a>
这是由app.routes.js文件
获取的.when('/', {
templateUrl : 'app/views/pages/home.html',
controller: 'MainController',
controllerAs: 'main'
})
没有任何反应 - fieldset 2仍然是可见的而不是fieldset 1。
我期望$scope.preview
将被设置为false,因为这是控制器中的第一行,这将使第一个字段集再次可见。
当我进行浏览器刷新时,它可以工作但不使用路由。
我已经尝试location.reload();
(这在小提琴中起作用),但是当我在app控制器中应用它时,我得到TypeError:$location.reload
不是函数。
我已经尝试$route.reload()
将其发送到无限循环中,并window.location.reload()
继续重新加载。
有没有一种简单的方法可以通过路由实现类似浏览器的页面刷新?