【问题标题】:Detect specific app.state change in Ionic检测 Ionic 中特定的 app.state 变化
【发布时间】:2016-05-03 23:25:38
【问题描述】:

是否有任何方法可以检测特定状态的变化,就像我的情况一样 只有当我们从 app.state 1 转到 app.state 2 时,我才想运行一个函数。 controller.js

 if(app.state1 to app.state2) {
    $scope.run();
    }

我也搜索过,但没有找到与此相关的内容。
问候。

【问题讨论】:

  • 抱歉,我从未使用过 Ionic。

标签: javascript jquery ionic-framework


【解决方案1】:

Ionic 路由使用 Angular ui-router,因此事件回调的使用方式相同:

ui-router

在适当的情况下:

$rootScope.$on('$stateChangeStart', function(ev, toState, toParams, fromState, fromParams){
    if(toState.name == 'stateA' && fromState.name == 'stateB') {
        // run your code
        $scope.run();
    }
});

(更新)

如果您需要询问多个州:

$rootScope.$on('$stateChangeStart', function(ev, toState, toParams, fromState, fromParams){

    var states = ['stateB', 'stateC', 'stateD'];

    if(toState.name == 'stateA' && states.indexOf(fromState.name) > -1) {
        // run your code
        $scope.run();
    }
});

【讨论】:

  • 还有一个问题。我们可以添加多个 fromState.name 吗?
  • 不客气,fromState 将始终只带来路由器将要进入的当前状态。如果要查询多个状态,可以使用单个 javascript 代码:var states = ['stateB', 'stateC', 'stateD']; if(states.indexOf(fromState.name) > -1){ ... }
  • 我认为我做不到。你能给我完整的代码吗,因为我不明白在 {} 里面写什么。
  • 非常感谢。我想你很了解 ionic 所以你也可以检查这个问题stackoverflow.com/questions/37005207/…
  • 它正在创建一个错误。我在“stateB”上设置了 hide-nav-bar="true" 然后从 stateB 回到 stateA 它显示了我的导航栏。我在这里使用了一个函数来代替 *$scope.run() 刷新页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2021-06-07
相关资源
最近更新 更多