1.简述angularjs的优缺点
优点:
1.模板功能强大丰富,并且是声明式的,自带了丰富的angular指令
2.是一个比较完善的前端mv*框架,白喊模板,双向数据绑定,路由,模块化,服务,过滤器,依赖注入等所有功能;
3.自定义Directive,比jQuery插件还灵活,但是需要深入了解Directive的一些特性,简单的封装容易,复杂一点官网没有提供详细的介绍文档,我们可以通过阅读源代码 找到我们需要的东西
4.ng模块化比较大胆的引入一些Java的一些东西(依赖注入),能很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助,我们的项目从上线到目前,UI变化很大在摸索中迭代产品,但是js基本上很少改动
缺点:
1.验证功能错误信息显示比较薄弱,需要很多模板标签
2.ngView只能有一个,不能嵌套多个视图,虽然angular-ui/ui-router · Github解决,但是貌似ui-router对于URL的控制不是很灵活,必须是嵌套式的
3.对于复杂的应用场景,貌似性能有点问题,特别是在Windows下使用chrome浏览器,不知道是不是内存泄漏了还是什么问题,奇怪的是IE10下反而很快
4.ng提倡在控制器楼里面不要有DOM操作的代码,对于一些jQuery插件的使用,若果想不破坏代码的整洁性,需要写一些directive去封装一些插件
5.Angular太笨重,没有让用户去选择一个轻量级的版本
2.angularjs组件之间如何通信
Angularjs为在scope中为我们提供了冒泡和隧道机制,$broadcast会把事件广播给所有子controller,而$emit则会将事件冒泡传递给父controller,$on则是angularjs的事件注册函数
3.指令scope的绑定策略
1、@:把当前的属性作为字符串传递。你还可以绑定来自外层的scope的值,在属性值中插入{{}}即可。下面是代码。
2、“=”: 与父scope中的属性进行双向绑定
3、“&”:传递来自父scope中的函数、稍后调用
4.angular.js的作用域
1.$rootScope是根作用域,controller作用域$scope继承$rootScope,所有的controller都可以访问$rootScope
2.父子contorller之间作用域$scope也存在继承关系,子contorller可以访问父controller作用域里面的值
3.指令directive也存在scope,默认值false,跟controller作用域共用一个作用域,如果为true ,scope继承controller $scope