【问题标题】:Ionic router: determining how a view has been entered离子路由器:确定如何进入视图
【发布时间】:2015-05-29 07:56:08
【问题描述】:

我正在使用 Ionic v1.0.0-rc.2。

由于控制器 + 视图缓存在 Ionic 中,因此必须注意正确初始化控制器 $scope。

我正在使用以下回调来执行此操作:

$scope.$on('$ionicView.beforeEnter', function(){
     ...
}

但是,要知道如何初始化 $scope,我需要知道视图是如何被调用的:

  1. 是否由后退按钮调用(A --> B --> 回到 A)
    • 在这种情况下,我想保留大部分物品
  2. 按下后退按钮后是否返回(A --> B --> 返回 A --> 返回 B)
    • 在这种情况下,我想保留大部分物品
  3. 是否按照新路径(不是后退或前进)进入...请注意,视图可能已经从以前的导航中实例化
    • 在这种情况下,我想重新初始化视图

我一直在查看下面的文档,但找不到这样做的方法,或者将哪些参数(如果有)传递给回调函数。任何文档指针都会很棒。

【问题讨论】:

    标签: ionic-framework ionic


    【解决方案1】:

    为了确定路线中发生了什么,我链接了这个:

    // Add state change hooks to log issues to console
    .run(['$rootScope', '$state', '$urlMatcherFactory', function($rootScope, $state, $urlMatcherFactory) {
    
                $rootScope.$state = $state;
    
                function message(to, toP, from, fromP) { return from.name  + angular.toJson(fromP) + " -> " + to.name + angular.toJson(toP); }
    
                $rootScope.$on("$stateChangeStart", function(evt, to, toP, from, fromP) { console.log("Start:   " + message(to, toP, from, fromP)); });
                $rootScope.$on("$stateChangeSuccess", function(evt, to, toP, from, fromP) { console.log("Success: " + message(to, toP, from, fromP)); });
                $rootScope.$on("$stateChangeError", function(evt, to, toP, from, fromP, err) { console.log("Error:   " + message(to, toP, from, fromP), err); });
            }])
    

    这应该会让您通过一些自定义朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多