AngularJS ui.router父控制器触发器

AngularJS ui.router父控制器触发器,angularjs,Angularjs,我有一个复杂的ui.state设置,为了方便url,我将用户带到“基本”子页面url,然后提供选项卡来过滤页面上的内容。例如: /page/unique page slug一个选项是,您可以创建一个shell控制器,并使用.transitiono和设置{reload:true} 标记 <div class="navbar" ng-controller="shell"> <div class="navbar-inner"> <a class="

我有一个复杂的ui.state设置,为了方便url,我将用户带到“基本”子页面url,然后提供选项卡来过滤页面上的内容。例如:


/page/unique page slug
一个选项是,您可以创建一个shell控制器,并使用
.transitiono
和设置
{reload:true}

标记

  <div class="navbar" ng-controller="shell">
    <div class="navbar-inner">
      <a class="brand" href="#">Quick Start</a>
      <ul class="nav">
        <li><a href="#" ng-click="go('route1')">Route 1</a></li>
      </ul>
    </div>
  </div>
更新示例:

老实说,在阅读这个问题之前,我没有意识到
。转换到
。但我在github论坛上找到了它


我认为最初的问题是,当您转到次级路线时,您从未真正脱离路线1。因此,控制器代码不会被重新绑定,除非您做一些事情来显式地重新运行它。在这种情况下,强制重新加载。

grah,强制重新加载是非常不可取的,不过感谢您的回答,我也没有意识到
转换为
。我想知道是否可以用同样的方法来监控你什么时候离开一条路线,然后发射一些东西?啊,是的,这看起来很理想。我将在文档中再看一看我设法找到了一个漏洞,在我的每个“选项卡”中添加了一个单击处理程序,该处理程序更改了
$watch
ed变量,这允许我在每次路由更改时触发回调。因为我要的是非刷新解决方案,所以我也在每个控制器的实例化中添加了更改的变量。我认为,这应该意味着回调在访问页面的所有方式上都被触发
  <div class="navbar" ng-controller="shell">
    <div class="navbar-inner">
      <a class="brand" href="#">Quick Start</a>
      <ul class="nav">
        <li><a href="#" ng-click="go('route1')">Route 1</a></li>
      </ul>
    </div>
  </div>
.controller('shell', ['$state','$scope',function($state, $scope) {
      $scope.go = function(route) {
        $state.transitionTo(route, { param1 : 'something' }, { reload: true });
      }
 }]);