【问题标题】:AngularJS router - doesn't work the second timeAngularJS路由器 - 第二次不起作用
【发布时间】:2015-03-02 15:57:42
【问题描述】:

In this plunk 我有一个 ui-router $state.goto 只能在第一次工作,即使我增加了一个 seq 变量来强制重新加载。看到时间戳没有改变。这段代码有什么问题?

HTML

<body ng-controller="MyCtrl">
    <button ng-click="goto()">Go to state</button>
    <div ui-view=""></div>
</body>

状态 HTML

  <div>
    {{time1}}
  </div>

Javascript

var app = angular.module("app", ['ui.router']);

app.controller('MyCtrl', function($scope,$state) {

var seq = 0;

$scope.goto = function(){

    alert('about to go to state - ' + seq) ;

        var params = { 
                seq: seq++ 
               };

        $state.go ( 'state1', params );

  };
});

app.controller('state1Ctrl', function($scope) {

      $scope.time1 = new Date();

});


app.config(function($stateProvider) {

  $stateProvider
    .state('state1', {
         templateUrl: 'state1.html',
         controller: 'state1Ctrl'
    });

});

【问题讨论】:

  • 您正在将参数传递给您的状态,但在您的 url 中您没有指定一个。
  • 我没有网址,只有州名

标签: angularjs angular-ui-router


【解决方案1】:

由于您实际上并没有改变状态(即,您每次都在点击state1,只是使用不同的参数),您必须使用{reload: true} 传递第三个选项参数

$state.go('state1', params, {reload: true});

您的plnkr,已更新

查看documentation$state.go(to, params, options)

编辑(根据我们下面的 cmets 使这个答案正确)

您没有在实际状态中包含params,因此它没有监听它们,因此当您发送它们时,它不会自动触发reload。你的状态应该是:

$stateProvider
  .state('state1', {
    templateUrl: 'state1.html',
    controller: 'state1ctrl',
    params: {
      seq: {}
    }
  });

在这里,$stateProvider 自动设置 reloadOnSearch = true,您可以通过在您的状态中使用第三个参数 reloadOnSearch: false 来执行与您所要求的相反的操作

【讨论】:

  • 我试图避免重新加载:true
  • 所以,你当前的状态实际上并没有监听任何参数(但你正在传递参数),如果它确实监听参数,它会自动@987654333 @
  • 我也错过了 {reload: true} 它救了我的命,谢谢
【解决方案2】:

params关键字缺失,使用参数时需要在$stateProvider中声明:

 $stateProvider
    .state('state1', {
         templateUrl: 'state1.html',
         params: { 'seq': null },
         controller: 'state1Ctrl'
    });

【讨论】:

    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多