AngularJS与其它框架的混用(jQuery, Dojo)
最后更新于:2022-04-01 22:40:19
# 16. AngularJS与其它框架的混用(jQuery, Dojo)
这个问题似乎很多人都关心,但是事实是,如果了解了 ng 的工作方式,这本来就不是一个问题了。
在我自己使用 ng 的过程当中,一直是混用 jQuery 的,以前还要加上一个 Dojo 。只要了解每种框架的工作方式,在具体的代码中每个框架都做了什么事,那么整体上控制起来就不会有问题。
回到 ng 上来看,首先对于 jQuery 来说,最开始说提到过,在 DOM 操作部分, ng 与 jQuery 是兼容的,如果没有 jQuery , ng 自己也实现了兼容的部分 API 。
同时,最开始也提到过, ng 的使用最忌讳的一点就是修改 DOM 结构——你应该使用 ng 的模板机制进行数据绑定,以此来控制 DOM 结构,而不是直接操作。换句话来说,在不动 DOM 结构的这个前提之下,你的数据随便怎么改,随便使用哪个框架来控制都是没问题的,到时如有必要使用 `$scope.$digest()` 来通知 ng 一下即可。
下面这个例子,我们使用了 jQuery 中的 _Deferred_ ( `$.ajax` 就是返回一个 _Deferred_ ),还使用了 ng 的 _$timeout_ ,当然是在 ng 的结构之下:
1
2
3
4
5 AngularJS
6
7
8 9 AngularJS
6
8
9
1011
';
10 {{ a }}
11
1213
41
42
再把 Dojo 加进来看与 DOM 结构相关的例子。之前说过,使用 ng 就最好不要手动修改 DOM 结构,但这里说两点:
1. 对于整个页面,你可以只在局部使用 ng ,不使用 ng 的地方你可以随意控制 DOM 。
1. 如果 DOM 结构有变动,你可以在 DOM 结构定下来之后再初始化 ng 。
下面这个例子使用了 _AngularJS_ , _jQuery_ , _Dojo_ :
1
2
3
4
5
1213
363738
94
95
14 15
161718 19
202122 23 24
2526 3031
32
33
3435