我认为这与ng-enter事件没有被欺骗到最低的ui视图有关,但不确定如何正确解决此问题。
我有一个很大的angularjs应用程序,在子视图中有子视图,并且当用户在整个应用程序中导航时,所有动画效果都很好。问题是当我访问deepLink(例如,简单的页面刷新)并单击触发ng-enter / ng-leave的按钮时,它似乎并未在正确的Ui视图上触发
例如在简化模板中,我们正在使用:
<ui-content ui-view="" layout-fill="" class="ng-scope"><!-- uiView: undefined -->
<ui-view class="ng-scope"><!-- uiView: -->
<div id="child-view" ui-view layout="column" layout-fill="" class="ng-scope">
<ui-view class="grandchild-view ng-scope">
<!-- template for grandchild-view -->
<div ng-if="isActive" class="page {{action}}">
<!-- HTML Content here -->
</div>
</ui-view>
</div>
</ui-view>
</ui-content>
当我导航到该页面时,它会在第一次加载时播放一个弹出动画,并且当我按下next按钮时,ui视图<ui-view class="grandchild-view ng-scope">
应滑至下一个项目。导航到页面时,所有这些操作均按预期方式进行,但是当我们访问深度链接时,当我按下按钮进行下一次滑动时,弹出动画似乎再次发生,在按预期方式运行后,只会发生一次。
我相信这是ng-event不会在正确的ui-view上触发的问题,因为我将日志添加到我似乎注意到的是刷新后第一次在子视图上触发enter之后第一次按下按钮时孙子视图(显示不正确的动画),但是在随后的按钮上按下时,只有子孙视图(显示正确的动画)才被触发
任何人都可以建议我如何解决这个问题,如果它与众不同,我们正在使用ui-routerstate.$go
进行导航,其中传递了一个参数来设置用于指示动画的控制器中的类
$state.go($state.current.name, {
action: $scope.action
});
动作可以是打开的(将页面弹出并从应用程序的另一个区域来使用时使用),然后又是透明的(在grandChild视图中更改页面时,唯一的区别是它们滑动的方向)
我也遇到过同样的问题,似乎插入/嵌套ui视图的某个地方没有正确触发ng-animations的错误。为了解决该问题,我在插入新ui视图的状态下进行了有针对性的重载:
$state.go('app.state_inserting_ui', {}, {reload: 'app.state_inserting_ui'});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句