Javascript 如何进一步检查$http请求的屏幕高度?
假设有一个函数检查屏幕高度并发出Javascript 如何进一步检查$http请求的屏幕高度?,javascript,angularjs,Javascript,Angularjs,假设有一个函数检查屏幕高度并发出$http.get请求,直到它填满屏幕 app.controller('HomeController', function ($scope, $timeout, Api) { function checkScreen () { $timeout(function() { //Firefox fix var html = document.getElementsByTagName('html')[0]; if (htm
$http.get
请求,直到它填满屏幕
app.controller('HomeController', function ($scope, $timeout, Api) {
function checkScreen () {
$timeout(function() {
//Firefox fix
var html = document.getElementsByTagName('html')[0];
if (html.scrollTop == 0) {
html = html.getElementsByTagName('body')[0];
}
var scrollHeight = html.scrollHeight;
var clientHeight = document.querySelector('body').clientHeight;
var fromTime = Date.parse($scope.data[$scope.data.length - 1].value.date);
if (clientHeight == scrollHeight) {
$scope.fetcher(fromTime, checkScreen);
}
});
}
$scope.fetcher(0, checkScreen);
});
获取程序对$http请求使用Api服务
$scope.fetcher = function (fromTime, callback) {
Api.post.getList(fromTime).then(function (result) {
for (var i = 0; i < result.data.length; i++) {
$scope.data.push(result.data[i]);
};
callback();
});
}
$scope.fetcher=函数(fromTime,回调){
Api.post.getList(fromTime).then(函数(结果){
对于(var i=0;i
此代码有几个错误做法问题:- 检查控制器中的HTML/CSS属性
- 需要在控制器中对获取程序进行初始调用
- 如果我需要在指令中调用fetcher(比如无限滚动的appender),该指令将与控制器紧密耦合
注意:$scope.fetcher在每个控制器中都是不同的,但是无限滚动指令对于所有控制器都是通用的。我认为使用Api服务创建一个名为fetcher的更具体的服务比在控制器中使用$scope.fetcher更好
这样,方向将不再与控制器紧密耦合。
另外,将屏幕作为AngularJS的一个独特功能进行检查,并在控制器中使用它返回的布尔值进行多次使用抓取服务