在不重新加载控制器

时间:2017-01-02 09:56:10

标签: angularjs

我希望只要查询参数发生变化,控制器就不会重新加载。我已经尝试将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时,控制器会重新加载我不想要的状态。

1 个答案:

答案 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'
})

演示: http://run.plnkr.co/uGARJoK2zxGVa2VL/#/main/welcome/1