离子路由器:确定视图的输入方式

时间:2015-04-06 04:22:55

标签: ionic-framework ionic

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

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

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

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

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

  1. 是否通过后退按钮调用(A - > B - >返回A)
    • 在这种情况下,我想保留大部分项目
  2. 按下后退按钮后退回(A - > B - >返回A - >返回B)
    • 在这种情况下,我想保留大部分项目
  3. 是否按照新路径(不是后退或前进)输入...请注意,视图可能已从先前的导航中实例化
    • 在这种情况下,我想重新初始化视图
  4. 我一直在查看下面的文档,但找不到这样做的方法,或者将哪些参数(如果有的话)传递给回调函数。任何文档指针都会很棒。

1 个答案:

答案 0 :(得分:0)

为了确定路线中发生了什么,我将其链接起来:

// 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); });
        }])

通过一些自定义,这可以让你朝着正确的方向前进。