没有“onload”事件,重定向回Angularjs

时间:2016-03-14 07:57:22

标签: javascript angularjs redirect

首先,我找到了这个答案,但它们不适合..

我的问题是,当用户被重定向回页面时,我希望我的应用程序的AngularJS部分重新加载某些内容。 登录流程就像这样

a.php - > [FB Magic] - > callback.php - > a.php只会

我的问题是<body onload="foo()">只发射一次。 DOMContentLoadedwindow.onload也是如此。

对于a.php,用户从不离开页面。

当用户被重定向回来时,如何让AngularJS调用一个函数(在控制器中定义)? (我正在使用PHP进行重做

编辑:我的控制器的样子 - &gt;

pwm.controller('EventListController', ['$scope', 'pwmApi',
function EventListController($scope, pwmApi) {
    $scope.fetched = false;
    $scope.events = [];
    let update = function () {
       <!-- Does stuff, is a bit long ->
    };
    update();
}]);

所以:)更新();在构造控制器时调用方法。当我被重定向回来时,不会调用update-function - 刷新页面有帮助。

我衷心希望这一澄清有所帮助。重定向后重新加载页面有帮助,但现在没有任何反应......

3 个答案:

答案 0 :(得分:0)

你可以像这样制作$ url -  $url = "abc?rediect='true';

此处redirect='true'表示您正在重定向。

在你的angularJs控制器中执行此操作 -

<强>控制器

.controller('controller',function($location){
   var queryParameters = $location.search();

   // Check if redirect is true
   if(queryParameters.redirect === 'true')}{
      // Call a function
      myFunaction();
   }
});

更新 - 在查询字符串中,所有值都是sting,因此布尔 true 也会变为&#39; true&#39; ,所以你必须像字符串一样处理它而不是布尔值。

答案 1 :(得分:0)

我找到了一种在PHP中实现它的方法(https://stackoverflow.com/a/8577805/1870799

而不是header("Location: $url");(我原来的重定向解决方案)和header("Location: $url?redirect=true");我现在正在使用 header("refresh: 0;url=$url");并且按预期工作。

但是仍然...... AngularJS是否可以对Location头做同样的事情?

答案 2 :(得分:-2)

聆听onload并不适合角度。

如果您使用ngRoute或ui-router甚至ng-controller进行路由,相关的控制器将再次执行。如果还不够,您可以收听路由模块提供的事件:$ routeChangeSuccess / $ stateChangeSuccess