我希望只要查询参数发生变化,控制器就不会重新加载。我已经尝试将reloadOnSearch
设置为false,控制器会在更改stateparam
时重新加载。
这是我用来实现结果的代码。
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'templates/login.html',
controller:'loginCtrl'
})
.state('layout', {
url: '/layout',
templateUrl: 'templates/layout.html',
controller:'layoutCtrl'
})
.state('main', {
url: '/main',
templateUrl: 'templates/main.html',
abstract:true,
controller:'mainCtrl'
})
.state('main.welcome', {
url: '/welcome/:id',
templateUrl: 'templates/welcome.html',
reloadOnSearch : false,
controller:'greetingCtrl'
})
例如,当状态从/main/welcome/1
更改为/main/welcome/2
时,控制器会重新加载我不想要的状态。
答案 0 :(得分:2)
在 ui-router 1.0.0中,您可以使用动态参数:
动态参数(替换reloadOnSearch)可以 在状态定义中的params块中声明如下:params; { fooParam:{dynamic:true}}。当动态参数改变时,它 不会导致重新加载状态。控制器/组件 回调uiOnParamsChanged可用于通知参数 变化。
例如:
.state('main.welcome', {
url: '/welcome/:id',
params: {
id: {
dynamic: true
}
},
templateUrl: 'templates/welcome.html',
controller: 'greetingCtrl'
})