不需要的多个相同功能的实例

时间:2016-09-15 11:12:53

标签: javascript angularjs

我在控制器中有这个:

var page = 2;

$($window).scroll(function () {
    if($($window).scrollTop() == $(document).height() - $($window).height()) {
        myService.addMore(page);
        page++;
        console.log("page: " + page);
    }
});

滚动到页面底部时会运行此功能。然后,该函数使用页面值作为参数调用myService。 服务功能只是一个http请求,如下所示:

factory.addMore = function (page) {
    $http({
        method: "GET",
        url: "url..." + page,
    }).success....
}

每次向下滚动时,服务都会使用页面值生成一个http请求,并将一些数据打印到视图中。虽然页面变量每次都会增加1,但应该这样。

但是,如果通过向下滚动触发该功能,然后导航到网站上的其他页面,然后再使用滚动功能返回到页面,则会出现问题。

console.log输出:

  • 向下滚动,输出:page:3
  • 向下滚动,输出:第4页
  • 更改页面,然后返回滚动页面并再次向下滚动,输出:第5页 和页面:3

所以现在突然间我似乎有两个这样的功能正在运行,这是一个问题。我怎样才能解决这个问题?每次返回时,页面值都应重置为2。

我使用ui路由器在状态之间切换。

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您正在将侦听器绑定到window对象。在单页面应用程序中持续存在状态。要么在状态重定向中取消绑定侦听器,要么将其绑定到在状态重定向中取消解析的元素(即状态模板中的某些内容)。