我有一个带有视图的离子项目(使用AngularJS)。路由就像:
.state('menu.play', {
url: '/play/:audioIndex',
views: {
'side-part': {
templateUrl: 'templates/play.html',
controller: 'playCtrl'
}
}
})
在控制器上,我得到了' audioIndex'参数并将其设置为$rootScope
,$scope
并在控制台上显示
.controller('playCtrl', function($scope, $stateParams, $rootScope) {
$rootScope.viewsAudioIndex = $stateParams.audioIndex;
$scope.audioIndex = $stateParams.audioIndex;
console.log("stateParams.audioIndex: " + $stateParams.audioIndex);
})
我从http://localhost:8100/#/menu/play/0
开始。
我的下一个音频按钮就像:
<a href="#/menu/play/{{audioIndex + 1}}">Next</a>
我点击了三次,然后在我的控制台上
stateParams.audioIndex: 0
stateParams.audioIndex: 1
stateParams.audioIndex: 2
stateParams.audioIndex: 3
没关系,问题是我点击后退按钮;
<a href="#/menu/play/{{audioIndex- 1}}">Back</a>
控制台不打印任何内容,就像控制器没有被调用。
我检查了chrome dev工具(AngularJS标签),当我返回时,$ rootScope不会改变。视图路由工作正常,没有问题。
回顾一下,如果我从menu/play/0
开始,那么
我上了控制台
stateParams.audioIndex: 0
stateParams.audioIndex: 1
stateParams.audioIndex: 2
stateParams.audioIndex: 3
stateParams.audioIndex: 1
stateParams.audioIndex: 2
stateParams.audioIndex: 3
知道为什么吗?我看到当我回去时,范围被销毁,但这并不能解释$rootScope
没有被更新。
答案 0 :(得分:0)
通常必须使用ui-sref完成角度路由。 Haven未对您的案例进行过测试,但您仍需要更改链接以避免其他错误:
<a ui-sref="menu.play({audioIndex: {{audioIndex + 1}}})">Next</a>
<a ui-sref="menu.play({audioIndex: {{audioIndex - 1}}})">Back</a>
答案 1 :(得分:0)
正如Radim说我必须禁用缓存:
var currentDate = new Date();
var dayOfWeek = currentDate.getDay();