编辑:不要这样做。除非你想花几个小时进行调试,否则这是浪费时间,事实证明这比我想象的要复杂得多。目前解决方案是:
$scope.$emit
告知主控制器何时完成加载。简而言之,如果您需要这个(我在ui-router问题跟踪器上看到了一些问题),请不要使用解析器或ng-animate来输入动画。您也无法在$stateChangeStart
事件和离开动画上执行此操作,因为这与ui-router的工作方式相冲突。
以下是我原来的问题。
我有一个特定的用例,我需要页面转换,并按照特定的顺序解决,目前它们是这样发生的:
resolve > animate out > animate in
我需要更像这样:
animate out > resolve > animate in
我决定查看ui-router源代码并找出它的行为方式。幸运的是,它是一个非常简单的mod。在ui-view指令中,我们有这段代码。
scope.$on('$stateChangeSuccess', function() {
updateView(false); // cleanupLastView(); is at the end of this function
});
scope.$on('$viewContentLoading', function() {
updateView(false); // cleanupLastView(); is at the end of this function
});
我需要将其更新为:
scope.$on('$stateChangeStart', function() {
cleanupLastView();
});
scope.$on('$stateChangeSuccess', function() {
updateView(false); // remove cleanupLastView();
});
scope.$on('$viewContentLoading', function() {
updateView(false); // remove cleanupLastView();
});
问题在于,出于显而易见的原因,我不想去破解核心。有没有办法去注册" ui-router
ui-view
指令并告诉它使用我的一个指令?
答案 0 :(得分:2)
所以我实际上写了这个问题然后找到答案。在互联网上旅行时将其发给其他任何人。
答案是复制 BOTH ui-view指令,只需添加一个名为(例如)rich97-view
的新指令。然后,您可以在视图中使用它,就像使用ui-view一样。这个方法的好处是mod只适用于你需要它的地方,默认行为没有改变。