首先,我找到了这个答案,但它们不适合..
我的问题是,当用户被重定向回页面时,我希望我的应用程序的AngularJS部分重新加载某些内容。 登录流程就像这样
a.php - > [FB Magic] - > callback.php - > a.php只会
我的问题是<body onload="foo()">
只发射一次。 DOMContentLoaded
和window.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 - 刷新页面有帮助。
我衷心希望这一澄清有所帮助。重定向后重新加载页面有帮助,但现在没有任何反应......
答案 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