使用Angularjs需要注意的一些东西
写在前面——真心没时间精力仔细总结了,先放这儿,有空再细化~~~~~~~~
近期一直在玩Angularjs,不得不说,相对于Knockout,Angularjs这一MVVM框架更强大,也更复杂,各种教程网上到处都是,不过真正用到项目的时候会遇到各种坑。
这儿有一篇Think in Angularjs主要讲的是Angularjs思想等,对于我们用过若干年Jquery的人来说有些思想确实和Angularjs有不一样,不过可能有些方面有点过于理想化了,或者说如果要做到Think in Angularjs需要对Angularjs理解比较透彻,个人见解。
一方面由于许多东西在用的时候理解的不甚透彻,另一方面由于在现有的项目中,很难把所有东西都按照Angularjs的写法来做。在享受Angularjs带来的数据绑定&交互的方便的同时我们还需要继续使用项目中原有的UserControl、插件,那么在此过程中会遇到各种问题,现总结如下:
1.和Jquery的兼容问题,Angularjs自带jqLite,在使用过程中发现,如果项目中使用jquery-1.6.4版本,那么如果将AngularJs引用放在Jquery后面就会报错,但是Jquery-1.8之后没有这个问题。
2.和Jquery-ui-dialog结合使用的问题,项目中会经常用到各种模态框,其实个人感觉最好的方式就是用一套采用Angularjs编写的组件/插件,ui bootstrap是目前我见过写的最好的。不过这个是理想的状态,奈何项目中一直习惯使用Jquery-ui-dialog,那么在使用的过程中就会遇到问题,问题描述出来可能比较繁琐,如下:
假设页面有一个产品列表,点击产品名称要展示相应的产品详情:
-
1.angularjs vs jquery 1.6.4
2.jquery ui dialog 脱离了controller
3.加载时机问题
4.$timeout要想清楚 回来后。。 select init
bind trigger 第三方调$scope内部方法 http://www.html-js.com/article/Using-Angular-to-develop-web-applications-use-AngularJS-to-create-a-pre-input-plugins
5.date:'yyyy-MM-dd HH:mm:ss' 格式化 截断
6.IE(9)缓存
7.IE8 兼容问题(不支持自定义标签)http://rritw.com/a/bianchengyuyan/JS/2014/0405/488748.html: <!--[if lte IE 8]>
<script>
document.createElement('radio-list');
</script>
<![endif]-->
8.闪烁 {{}}->ng-bind
9.//# sourceMappingURL=angular.min.js.map10.$http post
11.track by $index
12.自定义的不能用 ng-前缀 否则会报错Error: [$compile:ctreq]
13.ng-repeat 原list不存在的情况 添加无反应 参见autoList currTopicModel.TopicCategories.push({ Tags: [] });