AngularJS和SailsJS,当用户离开视图

时间:2015-07-31 23:06:27

标签: javascript angularjs sails.js waterline

我正在开发一个应用程序,它使用AngularJS作为前端,Sails.js作为后端。有一个搜索页面,用户可以在其中搜索符合给定条件的一组项目。这个结果可能非常大,所以在我们的查询中,我们使用limit和skip循环遍历数据。

我们正在使用sails-mysql适配器,现在正在使用Model.query方法。我们可能会改变这个以使用水线的内置关联,但还没有。当用户点击搜索时,来自前端的查询开始如下:

for(var i = 0;i < $scope.icount; i = i + $scope.limit){
   $http.get(SAILS_URL + '/details/getItems?i_name=' + $routeParams.item + '&i_version="' + $routeParams.iversion + '&limit=' + $scope.limit + '&skip=' + i, {withCredentials:true})
   .success(function(data) {
        $scope.gridOptions.data.push.apply($scope.gridOptions.data, data);
        numLoaded += $scope.limit;
      });
}

getItems方法只获取一些URL参数,并且有一个Model.query调用来从MySQL获取数据。

问题是,当离开视图时,查询或循环可以继续,并且可以减慢该用户的整个应用程序的速度,直到完成为止。有没有办法从Angular前端向Sails后端发送信号,用户已从视图导航并停止查询?当有人从视图导航时,angular会终止任何正在运行的循环吗?

我被建议在风帆中使用听众,例如:

req.connection.addListener('close', function () {
    console.log('all done here');
    // callback is fired when connection closed (e.g. closing the browser)
});

但是我们不确定要听什么或如何从Angular发送事件。是听众的方式吗?或者,还有更好的方法?谢谢!

0 个答案:

没有答案