如何在角度js中重新加载子状态

时间:2015-04-15 11:37:57

标签: angularjs angular-ui-router

<li ui-sref=".overview" 
    ui-sref-active="currentState"
    ui-sref-opts="{reload:true}">Flavors</li>

配置:

 .state('azure.overview', {
    url:'/azureOverview', 
    templateUrl  :'partials/azure/azureOverview.html', 
    controller : 'azureOverviewCtrl' 
  })        
controller $scope.init() { }

我使用过此代码片段,但我的父状态也在重新加载,但我只想重新加载子状态

3 个答案:

答案 0 :(得分:2)

@Lakshmi你可以在这里得到答案:

0.2.14开始,您还可以选择重新加载当前状态,而不是它的父级。

因此$state.go(people.search, {}, {reload: true});会重新加载people州以及所有孩子。

虽然$state.go(people.search, {}, {reload: "people.search"});不会重新加载people州,但会重新加载people.search及其子级。

答案 1 :(得分:1)

a working plunker

以前,对于这个问题:in ui-router, how to re-resolve only the most local state?,我创建了this plunker

表明,我们可以使用params : {}来定义状态参数,该参数不在网址中..但可以用作&#34;更改触发器&#34; ,强制只是一个要重装的孩子状态。

Here我们可以看到这些状态:

  .state('azure', {
      url: "/azure",
      templateUrl: 'tpl.azure.html',
      controller: 'azureOverviewCtrl',
  })
  .state('azure.overview', {
      url: "/overview",
      params: { updater : 1, },
      templateUrl: 'tpl.overview.html',
      controller: 'OverCtrl',
  })

现在,我们可以创建此重新加载链接,该链接只会发送递增的更新程序编号

<li ui-sref-active="blue">
  <a ui-sref="azure.overview({updater: ($stateParams.updater + 1) })" 
  >Flavors <b>reloading</b></a></li>

通过这种增量,我们可以确定,重新加载链接 - 重新加载这个子状态

检查here

答案 2 :(得分:0)

ui-router的原生内置功能是:

在儿童之间导航时,将一个子状态转换为另一个孩子,父母永远不会重新加载

除非我们明确改变内置行为,例如通过装饰器,你通过这些选项强制重新加载:

  { reload: true}

您还可以在这篇文章中找到类似的解决方案 AngularJS UI Router $state reload child state only