离子框架视图转换正在中断

时间:2015-09-24 22:22:57

标签: angularjs ionic-framework ionic

这很奇怪。我的(第一个)应用程序中有几个选项卡,每个选项卡都有几个不同的视图。是的,要编码的最后一个标签让我感到悲伤。

当使用桌面浏览器时,完全没有问题 - 没有损坏的JS,动画很流畅,一切看起来都很棒,因为我从选项卡仪表板中的视图1转换到视图2,然后从视图2转换到视图3。 / p>

当我构建应用程序并尝试使用我的iPhone(5)时,视图1和2之间的过渡要么完全被打破(停止中途),要么发生迷你癫痫发作(前进和后退,然后再转发)登陆视图2.在视图2和视图3之间可以/确实发生同样的事情。当我去检查其他不相关的标签/视图时,这种情况永远不会发生。

我真的完全失去了,因为这种行为只发生在移动设备上的这3个视图中。桌面测试环境中没有任何内容。

我没有要显示的代码,因为我不知道从哪里开始使用代码。没有JS错误,没有。我已经注释掉了大部分相关控制器的JS和.html视图代码,只是将$ timoeut与$ state.go一起在视图之间导航(而不是按下按钮),同样的问题就出现了。

有什么想法吗?这真的是我的目标。

感谢。

PS。为了拥有代码,我将为这些视图添加我的路由器代码,因为它几乎是唯一没有被注释掉的代码 - 虽然这个路由器代码与我的应用程序的其余代码非常相似(和直到现在都没有问题):

       .state('tab.dashboard-add-step-1', {
            url: '/dashboard-add-step-1',
            cache: false,
            data: {
                requireLogin: true
            },
            views: {
                'tab-dashboard': {
                    templateUrl: 'templates/tab-dashboard-add-step-1.html',
                    controller: 'DashboardAddStepOneCtrl as dashboardAddStepOne'
                }
            }
        })
        .state('tab.dashboard-add-step-2', {
            url: '/dashboard-add-step-2',
            cache: false,
            params: {
                'listing': null
            },
            data: {
                requireLogin: true
            },
            views: {
                'tab-dashboard': {
                    templateUrl: 'templates/tab-dashboard-add-step-2.html',
                    controller: 'DashboardAddStepTwoCtrl as dashboardAddStepTwo'
                }
            }
        })
        .state('tab.dashboard-add-step-3', {
            url: '/dashboard-add-step-3',
            cache: false,
            params: {
                'listing':              null,
                'listingAttributes':    null
            },
            data: {
                requireLogin: true
            },
            views: {
                'tab-dashboard': {
                    templateUrl: 'templates/tab-dashboard-add-step-3.html',
                    controller: 'DashboardAddStepThreeCtrl as dashboardAddStepThree'
                }
            }
        })

更新,它更奇怪: 我似乎已经将问题缩小到执行步骤之间转换的功能。但是,如果从$ timeout调用,则函数完全正常/转换是平滑的。但是当通过ng-click或ng-submit调用时,它表现不佳(跳跃/破坏过渡)。

这是简单的代码:

    $scope.doStepOne = function() {       
        $state.go('tab.dashboard-add-step-2'); 
    };

    $scope.timer = $timeout(function() {
       $scope.doStepOne(); //the transition when called from here works perfectly         
    }, 5000);

但是当从ng-submit或ng-click调用相同的函数时,转换是混乱/丑陋的:

  <button class="button button-calm" ng-click="doStepOne()"> Continue to Step 2</button>

有什么想法?我看不出基于事件的函数调用如何与$ timeout的行为不同。

1 个答案:

答案 0 :(得分:1)

事实证明这是一个与iOS9相关的问题,我在iOS8的设备上试过它并且运行正常。

.....这引导我到以下补丁解决了这个问题,耶!!

<强>的信息:

http://blog.ionic.io/ios-9-potential-breaking-change/

<强>修补程序:

https://gist.github.com/IgorMinar/863acd413e3925bf282c