angularjs - 如何检查我位于哪个页面,或者哪个是当前页面的 Controller ?

标签 angularjs routes url-routing

我在 Angularjs 中有一个页面,我使用 RouteProvider 来控制页面和它们的 URL。我的(部分)routeProvider 定义如下所示:

$routeProvider.when("/", {
    redirectTo: "/Overview"
}).when("/Overview", {
    controller: "OverviewController",
    templateUrl:"template/overview.html"
}).when("/Group", {
    controller: "GroupController",
    templateUrl:"template/group.html"
});

OverviewController 显示 Google map 上每个群组的标记,然后 GroupController 显示所选群组中每个用户的标记。

由于用户经常改变自己的位置或状态,GroupController中的数据每隔一分钟就会刷新一次。

dataFactory.getUsers($routeParams.id);
$interval(function(){
    dataFactory.getUsers($routeParams.id);
}, 60*1000);

本例中的 getUsers() 方法将通过 Ajax 获取数据,然后调用适当的方法以在 map 上显示标记。

当您转到 /Group 页面一次,然后导航回 /Overview 时,就会出现此问题。该间隔继续执行,概览上的标记将被之前查看的组中的用户的标记覆盖。

我想在 $interval 调用中的函数内添加一个条件,该条件将检查我们是否位于 /Group 页面上。我该如何以 Angular 的方式做到这一点? (而不是检查 window.location.href 字符串)

最佳答案

我会走向不同的方向。您应该在离开页面时停止间隔,而不是添加条件。

var intervalPromise = $interval(function () { /* ... */ }, 5000);      
$scope.$on('$destroy', function () { $interval.cancel(intervalPromise); });

当您离开 Controller 时,这会破坏您的计时器。

In angular, how to use cancel an $interval on user events, like page change?

关于angularjs - 如何检查我位于哪个页面,或者哪个是当前页面的 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823218/

相关文章:

jquery - JavaScript 中的 URL 帮助器

redirect - 如何在 Node.js + Express 中重定向嵌套 url

javascript - 如何确定哪个 css 文件将发送给客户端

AngularJS 使用自定义过滤器的 promise 和计时

symfony - 在symfony2中使用Twig向路径请求添加属性

javascript - 在带有 AngularJS 的 Firefox 中使用 SVG 符号

angular - 从 Angular 中的 Modal 路由到其他页面

linux - accept_local 不起作用

javascript - 从 JSON 文件返回 RegExp 模式以创建 Angular 指令

angularjs - 如何实现变量从一个服务方法到另一个 Angular 的传递