angularJS优点
angularJS通过为开发者呈现一个更高层次的抽象来简化应用的开发。
如同其他的抽象技术一样,这也会损失一部分灵活性。并不是所有的应用都适合用AngularJS来做。
AngularJS主要考虑的是构建CRUD应用。(crud增删改查)
幸运的是,至少90%的WEB应用都是CRUD应用。但是要了解什么适合用AngularJS构建,就得了解什么不适合用AngularJS构建。
如游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用,和CRUD应用就有很大的不同,它们不适合用AngularJS来构建。
像这种情况用一些更轻量、简单的技术如jQuery可能会更好。
不足:
directive
复杂,上手比较难,看看这些符号和函数就能理解复杂度都多高:
E、A、C、M
自定义指令
1、可以转换成标签 要转换成标签 E
2、可以转换成属性 要转换成属性 A
3、可以转换成注释
4、可以转换成class
终要占用一个元素,尤其是当只想输出文本节点,而同时又必须使用 ng-switch 或 ng-repeat 时。
$resource 功能稍弱
缺少很多必要的 HTTP 方法,需要自定义;缺少全局配置;内部 $http 的 PATCH 方法对低版 IE 不兼容;
循环
//循环取students中的数据 交给 stu
<li ng-repeat="stu in students">
<li>{{stu.s_id}}</li>
<li>{{stu.s_name}}</li>
<li>{{stu.s_class}}</li>
</i>
input 的name 要和 input的ng-model名一样
验证:
required //非空验证
ng-show = "表单name.input的name.$error.required"
ng-pattern="正则表达式"
ng-show = "表单name.type的name.$error.pattern"
自定义指令
1、可以转换成标签 要转换成标签 E
2、可以转换成属性 要转换成属性 A
3、可以转换成注释
4、可以转换成class
directive//自定义指令
myApp.directive("指令名"函数(){
return{
restrict:"E", //要转换的类型
// require:"ngModel", //指定在改属性所在的标签中必须加入ng-model
replace:true, //替换
template:"<标签>自定义</标签>" //最后要转换成的模板
}
});
//属性
myApp.directive("指令名"函数(){
return{
restrict:"A", //要转换的类型
require:"ngModel", //指定在改属性所在的标签中必须加入ng-model
replace:true, //替换
template:"<标签>自定义</标签>" //最后要转换成的模板
}
});
//filter 过滤器
myApp.directive("指令名"函数($filter){
return{
restrict:"E", //要转换的类型
replace:true, //替换
template:function(ele,attr){
表达式
//时间过滤
$filter("data")(xx.getTime(),attr.dateFormat)//attr.dateFormat获取属性值
return:标签
}
}
});
自定义过滤器
myApp.filter("过滤器名",function(){
return function(xx){
return xx.toUpperCase(); //toUpperCase()小写转换大写 toLowerCase();大转小
}
});
<input type="text" ng-model="sss" />
{{sss | 过滤器名}}