我的结论是肯定的,除非我使用$ state.transitionTo,否则$ stateChangeSuccess不会触发?例如:
//in app config
.state('detail.zoom', {
url: '/zoom/{itemId}',
templateUrl: 'detail/zoom-partial.html'
})
//in html
<a href="#/zoom/{{item.id}}" >ZOOM IT!</a>
//in directive
scope.$state.transitionTo('detail.zoom', { itemId: item.id});
//in some controller
$scope.$on('$stateChangeSuccess', function () {alert('done transitioning!')});
来自transitionTo的事件触发$ stateChangeSuccess,但这不是href版本的情况。有没有办法让两种类型的过渡同等地被解雇?
答案 0 :(得分:1)
它让我觉得你正在使用嵌套状态。不应该是一个名为&#34; detail&#34;的州的单独网址。 意思是完整的网址是网址: &#39; /细节/ {的itemId} /变焦&#39;,
答案 1 :(得分:1)
尝试:
$rootScope.$on('$stateChangeSuccess', function () {
alert('done transitioning!')
});
答案 2 :(得分:1)
$过渡
服务
并在控制器中使用此方法:
$transitions.onStart({}, function() {});
$transitions.onSuccess({}, function() {});
答案 3 :(得分:0)
在你的指令中你可以尝试范围。$ apply()
//in directive
scope.$state.transitionTo('detail.zoom', { itemId: item.id});
scope.$apply();
答案 4 :(得分:0)
您可以在使用插入符号^之前缩短嵌套网址:
.state('detail.zoom', {
url: '^/zoom/{itemId}',
templateUrl: 'detail/zoom-partial.html'
})
<a href="#/zoom/{{item.id}}" >ZOOM IT!</a>