我有一个个人资料页面,其中列出了用户个人资料。用户可以单击编辑按钮来编辑所有与用户相关的信息。用户保存页面后,他们将导航回到个人资料页面,理想情况下应自动更新。
现在,我缺少一种在用户导航到页面时触发的事件。 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
看看它是否适合您的用例。