使用AngularJS开发中的几个问题
1、AngularJS的模板绑定机制好像和其$http服务也有一定关系,如果用jQuery Ajax的返回值赋给$scope的作用域变量,整个绑定显示的节奏慢一个事件,神器果然麻烦啊。
2、对hidden input做绑定好像无效:1.2以后用ng-value可以给hidden input赋值.
3、AngularJS中对input的ng-model绑定和对Input的value赋值之间存在矛盾。如果绑定了model就无法对value做赋值。
4、input不做ng-model绑定,那验证输入的机制就会有问题:错误提示显示不出来。观察Scope,你会发现,那段input对应的error值根本不存在。
5、根据3和4两个条件,对表单数据做初始化最好用ng-model,对$scope的变量做初始化时,只能对一级子属性复制比如$scope.attr1,如果直接对二级属性,$scope.attr1.attr2赋值,因为第一次初始化时可能$scope.attr1这个对象实际还没有创建,会导致代码出错。
6、关于依赖的注入办法,网上有篇文章作了总结:http://www.cnblogs.com/lcllao/archive/2012/09/23/2699401.html。文章给出的依赖注入推荐方法是:
var MyController = function(dep1, dep2) {
...
}
MyController.$inject = ['dep1', 'dep2'];
MyController.prototype.aMethod = function() {
...
}
但是遗憾的是这种方法对非Provider的依赖注入是无效的,所以比较保险的方法还是AngularJS一书最开始14页给出的方法:
var myAppModule = angular.module('myApp', []);
myAppModule.controller('TextController',
function($scope) {
var someText = {};
someText.message = 'You have started your journey.';
$scope.someText = someText;
});
这个方法最麻烦的是你得在HTML的ng-app那儿加一个“myApp”此类的属性值,而且这个地方有个问题就是个你得myapp得用JS定义,否则JS运行会出错,我个人建议
var myApp = angular.module('myApp',[]);
这么一条语句要放在站点个性化定制代码的第一行。
7、ng-repeat的那个数组,直接对数据做delete array[i]处理起不到真正的删除repeat元素的作用,需要对这个数据做一次处理,然后再对scope的数组赋值,才能真正起到更新repeat数组的作用。
8、数据绑定的异步问题,关于AngularJS的数据绑定机制简短说明见:http://blog.csdn.NET/dipolar/article/details/9291117,由于这种外部监控的绑定是通过外部监控异步的实现的,如果空间取值跟在模型赋值之后是无效的:如果第一句给某input的绑定model数据做了赋值,紧接着第二句语句就用jQuery.val()这样的函数从DOM树中取input的value得到的往往不是第一句给起绑定的值,因为这个时候,angualrJS的外部绑定监控还没有开始起作用。
9、input的model不能绑定$scope的一级变量,最后做一个空对象,绑定其二级变量,在Select上绑定一级变量会得不到值。
10、由ng-repeat网页端动态生成的option列表,给select的ng-model赋值的界面反馈并不是很正常(1.2版本),可以用ng-selected="ng-model_value == ng-value"来补充修正这个界面反应bug。
11、过滤器的问题:过滤器的object的表达式不是等于过滤而是字符串包含过滤,所以等于过滤必须用function来做。
12、ng-model传递texteara value值的问题,如果只是简单写在textera元素中间,不给对应ng-model赋值,页面加载完,textera里面什么都没有,因为没给对应的ng-model变量赋值,如果直接把后台参数值传给ng-model,那么texteara中的某些特殊字符会出问题,特别是换行符,会直接导致js出错,如果后台给值加过滤,那么等传回texteara的时候,还得把这些值转换回来,否则textera中会显示很多过滤转换后的字符----这个问题在国内不少大网站上出现过。保证后端过滤和前端的反过滤彼此匹配也很麻烦,因此,有个多写几句代码的解决方案,还是把服务器的预先值放在texteara元素中间,通过jq的相关函数取得这个值,在控制器函数中把这个值传给ng-model,这样就省下了过滤转换的麻烦。其实input里也有此类问题,比如最典型的单双引号可能和元素属性定义或者JS代码冲突,不过我用Django,它的默认过滤似乎已经解决这个问题。在Java领域可以引入ESAPI这个OWASP的强悍安全库,为HTML中多种位置的模板输出提供各种过滤。
使用AngularJS开发中的几个问题的更多相关文章
- AngularJS 开发中常犯的10个错误
简介 AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程,这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的客 ...
- AngularJS开发中常用的写法,如:获取URL参数、路由跳转、$http、获取元素等
控制器,带状态 app.controller('editCtrl', ['$http', '$location', '$rootScope', '$scope', '$state', '$stateP ...
- AngularJS移动开发中的各种坑
捂脸,辛酸泪ing...... 本文主要涉及部分在移动设备上特有的问题. 相对来说,Jquery侧重DOM操作,AngularJS是以视图模型和双向绑定为核心的. DOM操作的问题 避免使用 jQue ...
- AngularJS移动开发中的坑汇总
使用AngualrJs开发移动App已经快半年了,逐渐积累了非常多AngularJS的问题,特别是对于用惯了Jquery的开发人员,转到AngularJS还是须要克服非常多问题的.不像Jquery那样 ...
- [转]AngularJS移动开发中的坑汇总
使用AngualrJs开发移动App已经快半年了,逐渐积累了很多AngularJS的问题,特别是对于用惯了Jquery的开发者,转到AngularJS还是需要克服很多问题的.不像Jquery那样侧重D ...
- 如何通过热修复,搞定开发中的那些 Bug?
作为程序员,Bug 修复终究是绕不开的话题,本期移动开发精英俱乐部讨论的主题便是 Bug 修复中的 Hotfix,即热修复.接下来让我们跟随大牛的脚步来了解 Hotfix,就算你不能一下豁然开朗,相信 ...
- gulp自己主动化任务脚本在HybridApp开发中的使用
眼下做前端开发的同学可能都熟悉grunt.fis之类的自己主动化构建工具.事实上在HybridApp开发中我们也能够使用这些工具来简化我们的工作.gulp就是一个比grunt,fis都先进的构建工具. ...
- 【转】angularjs指令中的compile与link函数详解
这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在 ...
- AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能
在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...
随机推荐
- 网站开发进阶(三十八)Web前端开发规范文档你需要知道的事
Web前端开发规范文档你需要知道的事 规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进 ...
- Freemarker中如何遍历List
Freemarker中如何遍历List(附源码) 关键词(Keyword):Freemarker,Freemarker遍历list 在Freemarker应用中经常会遍历List获取需要的数据, ...
- 利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用
将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.d ...
- JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习
JAVA之旅(二十)-HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定 ...
- C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
Technorati 标签: C,标识符,作用域,命名空间,链接属性,生命周期,存储类型,scope,name space,linkage,storage durations,lifetime 无论学 ...
- 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎, ...
- Swift语言学习路线图
- 【算法导论】单源最短路径之Bellman-Ford算法
单源最短路径指的是从一个顶点到其它顶点的具有最小权值的路径.我们之前提到的广度优先搜索算法就是一种无权图上执行的最短路径算法,即在所有的边都具有单位权值的图的一种算法.单源最短路径算法可以解决图中任意 ...
- wing带你玩转自定义view系列(1) 仿360内存清理效果
本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...
- (二十八)QQ好友列表的展开收缩
要通过监听HeaderView上面的Button来进行操作: 通过addTarget方法即可,应该将按钮的点击方法封装在HearView控制器内部. 列表收起来的原理: tableView: numb ...