gpt4 book ai didi

AngularJS 路由器 - 第二次不起作用

转载 作者:行者123 更新时间:2023-12-01 00:54:47 27 4
gpt4 key购买 nike

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'
});

});

最佳答案

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

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

您的 plnkr , 更新

documentation$state.go(to, params, options)
编辑 (根据我们下面的评论使这个答案正确)

您不包括 params在实际状态下,所以它不会监听它们,因此当你发送它们时它不会自动触发 reload .你的状态应该是:
$stateProvider
.state('state1', {
templateUrl: 'state1.html',
controller: 'state1ctrl',
params: {
seq: {}
}
});

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

关于AngularJS 路由器 - 第二次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814071/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com