使用离子原生过渡插件时会出现相同的页面吗?

时间:2016-03-21 06:47:18

标签: ionic-framework

我在我的应用中使用离子原生过渡插件。我正在使用slide up转换页面。它可以工作,但是当状态更改时,它会在短时间内显示相同的页面,然后显示另一个页面(我要切换的页面)。这是github link。我尝试使用不同的默认选项值,但它并没有解决我的问题。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

我不确定你的问题是否与我的相同(当转换到下一个/上一个状态开始时,它应该转换到的“新状态”在动画之前/期间的“旧视图”中显示)但这就是我所做的。我找到了一个解决方案,即在ionic.native-transitions(.min).js中对stateGo()函数的状态更改添加超时,这会导致它作为最后一个函数运行。以下代码适用于iOS和Android设备。

function stateGo() {
  var state = arguments.length <= 0 || arguments[0] === undefined ? null : arguments[0];
  var stateParams = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
  var transitionOptions = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
  var stateOptions = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];

  if (!state) {
    $log.debug('[native transition] cannot change state without a state...');
    return;
  }

  unregisterToStateChangeStartEvent();
  transition(transitionOptions);
  if (ionic.Platform.isIOS()) {
    $timeout(function() {
      $state.go(state, stateParams, stateOptions);
    });
  } else {
    $state.go(state, stateParams, stateOptions);
  }
}

我决定添加对iOS设备的检查并仅在这种情况下运行超时,因为它只发生在iOS设备中,超时可能使Android设备在转换时闪烁一点(我可能是偏执的,这不是真的甚至发生,或者是由于我的应用程序内容上的大图像。)

相同的修复程序可能也适用于您正在使用locationurl的情况,在这种情况下,您只需将超时设置为“$ location.url(url);”功能

不确定这是否是此问题的最终解决方案,但它现在可以正常工作,并希望很快就会修复该插件,因此这个问题不会打扰其他任何人。

答案 1 :(得分:0)

使用时,同样的问题也在我身边:

$scope.$on('$ionicView.enter', function(event, viewData) {
    var transitionDirection = viewData.direction !== "back" ? "left": "right";
    var options = {
        "direction": transitionDirection,
        "duration": 600, 
        "androiddelay": 75
    };
    window.plugins.nativepagetransitions.slide(
        options,
        function () {},
        function () {}
    ); 
});

然而,当我将'$ ionicView.enter'事件更改为'$ ionicView.beforeEnter'时,它为我解决了这个问题。不确定这是否是一个合适的解决方案。