我有一个个人资料页面,其中列出了用户个人资料。用户可以单击编辑按钮来编辑所有与用户相关的信息。用户保存页面后,他们将导航回到个人资料页面,理想情况下应自动更新。

现在,我缺少一种在用户导航到页面时触发的事件。 window.onLoad()只工作一次,与window.onPageShow()相同。当用户离开页面时,会触发window.onPopState()

我的想法是依靠这样的事件,然后调用$ scope.init(),它下载用户信息并将其设置为视图:

.controller('UserProfileCtrl', function($scope, $http, $window, LocationService) {
    $window.onPageShow = function() {
      console.log("UserProfileCtrl->onPageShow(), getting location and loading user.");
      LocationService.getLocation();
      $scope.init();
    };

    $scope.init = function() {
        $http.post("my-backend-address")
        .success(function (data, status, headers, config) {
          $scope.user = data.user;
        })
    }
});

最佳答案

在Ionic中,您有一个称为“查看事件”的内容,您可以here了解它们。您的用例有两个有趣的事件:$ionicView.loaded$ionicView.beforeEnter

这是一个如何与代码一起使用的代码示例:

$scope.$on("$ionicView.beforeEnter", function() {
   console.log("UserProfileCtrl->onPageShow(), getting location and loading user.");
  LocationService.getLocation();
  $scope.init();
});


简而言之,创建视图时将调用$ionicView.loaded,并且每次要进入视图时都将调用$ionicView.beforeEnter。我建议尝试$ionicView.beforeEnter看看它是否适合您的用例。

10-02 20:35