Angularjs:如何使用ui路由器重新加载或刷新ui视图
我使用的是AngularUI路由器。它在每个路由中都有状态,但我无法重新加载状态。 这是我的密码Angularjs:如何使用ui路由器重新加载或刷新ui视图,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我使用的是AngularUI路由器。它在每个路由中都有状态,但我无法重新加载状态。 这是我的密码 app.config(function ($urlRouterProvider, $stateProvider) { $urlRouterProvider.otherwise("/home"); $stateProvider .state('home', { url: "/home", controller: 'HomeController',
app.config(function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise("/home");
$stateProvider
.state('home', {
url: "/home",
controller: 'HomeController',
views: {
"viewHome": {
templateUrl: "home.html"
},
})
}
在HTML中
<a href="#/home">Home</a>
当我单击主链接时,它重定向到主url,但当我尝试再次单击主链接时,它没有刷新相同的状态,它必须刷新主状态并再次调用HomeController。请给我一些解决方案。尝试将
target=“\u self”
添加到a
中。您还可以使用$window.location
。另外,$route.reload()
应该可以做到这一点。使用angular ui router,我成功地重新加载了一个状态:
$state.go($state.current.name, {}, {reload: true})
这将重新加载状态并重新初始化控制器。尝试使用:
$window.location.reload()
重新加载页面的内容。在任何控制器中键入该行。您可以指定要调用它的状态,它将重新加载页面和控制器。此代码适用于我:
$state.go($state.current.name, {}, {reload: true})
或
target=“\u self”不工作。。。以及将$window.location或$route.reload()放在何处,因为它在HomeControllery内不起作用您需要将
$window
或$route
分别导入控制器以使用它们感谢@fusio的建议,但它不起作用。可能是因为我使用的是ui路由器,它有状态提供程序,我也尝试了$state.transition(“home”)
,但它也不再工作了哦,我明白了。您是否尝试过$state.go()
?(它应该在内部使用transition
,所以我不确定它是否会有帮助。)是的,但它在控制台中抛出了一个错误TypeError:Object#没有方法“go”
its,因为$state.go()在最新的alpha 0.0.2版本中可用,并且它不是一个稳定的版本,这就是我使用以前的版本0.0.1的原因。这个主题可能是吗[[1]:我不相信这会重新初始化控制器。它似乎只是重新加载状态…这似乎与简单调用$state.reload()有相同的问题;有什么我遗漏了吗?根据控制器的说法,我应该重新验证。有一段时间出现了一个bug,但通过测试angular ui router的0.2.11和0.2.10版本,该bug似乎在v0.2.11中得到了修复。如果在这两个版本之间更改版本,您可以看到修复。升级到0.2.13,似乎可以工作。FWIW,.reload()似乎也适用于该版本。谢谢!
$state.go('state.name',{},{reload:true});