【问题标题】:Ionic: Method call on page enter离子:页面上的方法调用进入
【发布时间】:2023-04-01 07:14:02
【问题描述】:

我有一个

 带有指向此处定义的我的页面的链接:

    app.config(function($stateProvider, $urlRouterProvider, $ionicConfigProvider) {

      $stateProvider.state('content', {
        url: "/content",
        abstract: true,
        templateUrl: "templates/sidemenu.html",
        controller: 'SideController'
      });

      $stateProvider.state('content.home', {
        url: "/home",
        views: {
          'menuContent': {
            templateUrl: "templates/home.html",
            controller: "HomeController"
          }
        }
      });

      $stateProvider.state('content.nearby', {
        url: "/nearby",
        views: {
          'menuContent': {
            templateUrl: "templates/nearby.html",
            controller: "NearbyController"
          }
        }
      });

      $stateProvider.state('content.map', {
        url: "/map",
        views: {
          'menuContent': {
            templateUrl: "templates/map.html",
            controller: "MapController"
          }
        }
      });

      $stateProvider.state('content.radar', {
        url: "/radar",
        views: {
          'menuContent': {
            templateUrl: "templates/radar.html",
            controller: "RadarController"
          }
        }
      });

      $stateProvider.state('content.location-details', {
        url: "/location-details/:index",
        views: {
          'menuContent': {
            templateUrl: "templates/location-details.html",
            controller: "DetailsController"
          }
        },
        resolve: {
          currentLocation: function($stateParams, shareService, NearbyFactory)
          {
            return NearbyFactory.getLocations()[$stateParams.index];
          }
        }

      });

      $urlRouterProvider.otherwise("/content/home");
    });

当用户导航到此页面并离开页面时(用于加载 AJAX 数据或开始侦听某些 Cordova 传感器),我想在我的控制器中执行一个方法。像这样:

    app.controller("HomeController", function()
    {
      $scope.onEnter = function(previous_page)
      {
       ...
      };

      $scope.onExit = function(next_page)
      {
       ...
      };
    });

我已经在 $stateProvider 状态中尝试过 onEnter 和 onExit,但是我没有 $scope。

获得此功能的最简单/最好/最好的方法是什么?如果我可以确定上一页/下一页以及用户是否向后/向前导航,那就太好了。我试过这个:

$scope.$on('$routeChangeStart', function(event, next, current)
{
 console.log(next);
});

但这并非每次都有效,并且在加载页面时也没有触发。这对我来说似乎也有点脏,因为我必须在每个控制器中实现它。

谢谢!

【问题讨论】:

    标签: angularjs navigation angular-ui-router ionic


    【解决方案1】:

    您可以使用 $ionicView.beforeEnter 和 beforeLeave。 只需将其添加到您的 HomeController 中:

       app.controller("HomeController", function()
    {
            $scope.$on('$ionicView.beforeEnter', function() {
               //do stuff before enter
    
            });
             $scope.$on('$ionicView.beforeLeave', function() {
               //do your stuff after leaving
    
            });
    });
    

    您可以查看 $ionicView here 的文档。

    【讨论】:

      【解决方案2】:

      你可以试试这个。每次加载页面时它都会起作用:

      $scope.$on('$locationChangeStart', function(event)
      {
          console.log(event);
      });
      

      【讨论】:

        猜你喜欢
        • 2020-01-21
        • 1970-01-01
        • 1970-01-01
        • 2012-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多