angularjs 怎么监听滚动条

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs 怎么监听滚动条相关的知识,希望对你有一定的参考价值。

2. 如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(elem).xxx
3. 在html中引入script
<script type='text/javascript' src='path/to/jquery.min.js'></script>
<script type='text/javascript' src='path/to/angular.min.js'></script>
<script type='text/javascript' src='path/to/ng-infinite-scroll.min.js'></script>
4. HTML示例代码如下:
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<div ng-controller='PostListController'>
<div infinite-scroll='demo.nextPage()' infinite-scroll-disabled='demo.busy' infinite-scroll-distance=''>
<div ng-repeat='item in demo.items'>
<p>
<input type="hidden" value="item.PostId" />
<label>item.WriterName</label>
<label>item.WriterMail</label>
<label>item.WreckerName</label>
<label>item.StartDate</label>
<label>item.Location</label>
<label>item.Story</label>
</p>
</div>
<div ng-show='demo.busy'>Loading data...</div>
</div>
</div>

5. PostListController.js代码如下:
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

var ftitAppModule = angular.module('ftitApp', ['infinite-scroll']);
ftitAppModule.controller('PostListController',
function ($scope, Demo)
$scope.demo = new Demo();
);
// 创建后台数据交互工厂
ftitAppModule.factory('Demo', function ($http)
var Demo = function ()
this.items = [];
this.busy = false;
this.after = '';
this.page = ;
;
Demo.prototype.nextPage = function ()
if (this.busy) return;
this.busy = true;
var url = "http://...:/api/post/nextpage?id=" + this.page + "&callback=JSON_CALLBACK";
$http.jsonp(url).success(function (data)
var items = data;
for (var i = ; i < items.length; i++)
this.items.push(items[i]);

this.after = "t_" + this.items[this.items.length - ].id;
this.busy = false;
this.page += ;
.bind(this));
;
return Demo;
);

这样就实现了页面拖动到底后,从服务器自动加载数据的功能。
PS:AngularJS的加载执行过程
1. HTML页面的加载,这会触发加载页面包含的所有JS (包括 AngularJS)
2. AngularJS启动,搜寻所有的指令(directive)
3. 找到ng-app,搜寻其指定的模块(Module),并将其附加到ng-app所在的组件上。
4. AnguarJS遍历所有的子组件,查找指令和bind命令
5. 每次发现ng-controller或者ng-repeart的时候,它会创建一个作用域(scope),这个作用域就是组件的上下文。作用域指明了每个DOM组件对函数、变量的访问权。
6. AngularJS然后会添加对变量的监听器,并监控每个变量的当前值。一旦值发生变化,AngularJS会更新其在页面上的显示。
7. AngularJS优化了检查变量的算法,它只会在某些特殊的事件触发时,才会去检查数据的更新,而不是简单地在后台不停地轮询。
参考技术A

如果你是用的jQuery2.0以上版本,还需要修改ng-infinite-scroll.js程序,将所有的将所有的$window.xxx改为$(window).xxx, elem.xxx改为$(elem).xxx。AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

拓展:

1、AngularJS 是一个 JavaScript 框架。它是一个以 JavaScript 编写的库。它可通过 <script> 标签添加到 HTML 页面。AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。

2、AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。

3、AngularJS试图成为WEB应用中的一种客户端的解决方案。这意味着它不只是你的WEB应用中的一个小部分,还是一个完整的客户端的解决方案。这会让AngularJS在构建一个CRUD(增加Create、查询Retrieve、更新Update、删除Delete)的应用时显得很"固执"(原文为 opinionated,意指没有太多的其他方式)。但是,尽管它很"固执",它仍然能确保它的"固执"只是在你构建应用的起点,并且你仍能灵活变动。

如何用js监听滚动条滚动事件

在做js返回顶部的效果时,要监听网页滚动条滚动事件, 参考技术A onmousewheel
事件参数:(e || window.event)
谷歌:wheelDelta:120为上滑,-120为下滑
火狐:detail:-3为上滑,3为上滑本回答被提问者采纳

以上是关于angularjs 怎么监听滚动条的主要内容,如果未能解决你的问题,请参考以下文章

css 怎么设置内容滚动,滚动条隐藏

JS原生监听滚动条

如何用js监听滚动条滚动事件

如何用js监听滚动条滚动事件?

jquery怎么实现平滑滚动效果 就是随着滚动条而滚动

如何获取网页滚动条滚动事件