Ionic: вызов метода на странице ввода

У меня есть

& л; ion-side-menu>
со ссылками на мои страницы, определенные здесь:
    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)
      {
       ...
      };
    });

Я уже пробовал onEnter и onExit в состоянии $ stateProvider, но на самом деле у меня там нет моего $ scope.

Какой самый простой /лучший /приятный способ получить эту функциональность? Было бы здорово, если бы я мог определить предыдущую /следующую страницу и если бы пользователь перемещался назад /вперед. Я попробовал это:

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

но это не всегда срабатывало и не срабатывало при загрузке страницы. Это также кажется мне немного грязным, потому что я должен был бы реализовать это на каждом контроллере.

Спасибо!

7 голосов | спросил C.M. 9 FebruaryEurope/MoscowbMon, 09 Feb 2015 23:36:10 +0300000000pmMon, 09 Feb 2015 23:36:10 +030015 2015, 23:36:10

2 ответа


0

Вы можете использовать $ 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 здесь .

ответил Muffasa 3 J000000Friday15 2015, 11:48:03
0

Вы можете попробовать это. Работает каждый раз при загрузке страницы:

$scope.$on('$locationChangeStart', function(event)
{
    console.log(event);
});
ответил Kiva 12 AM00000070000000631 2017, 07:32:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132