ng-enter未在ui视图上触发,ui视图是页面刷新时另一个ui视图的子视图

ng-enter not triggering on ui-view which is child of another ui-view on page refresh

本文关键字:视图 ui 刷新 另一个 未在 ng-enter      更新时间:2023-09-26

我认为这是因为ng-enter事件没有深入到最低的ui视图,但不确定如何正确解决这个问题。

我有一个大型angularjs应用程序,子视图中有子视图,当用户在整个应用程序中导航时,所有动画都能完美工作。问题是,当我访问deepLink(例如,简单的页面刷新(并点击触发ng-enter/ng-leaf的按钮时,它似乎不会在正确的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>

当我导航到页面时,它会为第一次加载做一个弹出动画,当我按下下一个按钮时,ui视图<ui-view class="grandchild-view ng-scope">应该会滑动到下一个项目。当导航到页面时,这一切都按预期进行,但当我们访问深度链接时,当我按下按钮滑动下一页时,弹出动画似乎再次发生,这种情况只发生一次,在它按预期进行之后。

我认为这是ng事件没有在正确的ui视图上触发的问题,因为我添加了日志到我似乎注意到的是在刷新后第一次按下按钮时,在子视图上触发了回车,然后在孙视图上触发(显示不正确的动画(,但在随后按下的按钮上,它只是在子视图中没有触发,只有孙子视图(显示正确的动画(

有人能告诉我如何解决这个问题吗?如果它造成了不同,我们使用ui路由器state.$go来导航,它传递了一个参数来设置控制器中用于指示动画的类

$state.go($state.current.name, {
    action: $scope.action
});

操作可以是打开的(弹出页面并在来自应用程序的另一个区域时使用(下一个和上一个(在grandChild视图中更改页面时,唯一的区别是它们的滑动方向(

我也遇到过同样的问题,似乎有一个错误,插入/嵌套的ui视图没有正确触发ng动画。为了解决这个问题,我对插入新ui视图的状态进行了有针对性的重新加载:

$state.go('app.state_inserting_ui', {}, {reload: 'app.state_inserting_ui'});