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开发中的几个问题的更多相关文章

  1. AngularJS 开发中常犯的10个错误

    简介 AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程,这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的客 ...

  2. AngularJS开发中常用的写法,如:获取URL参数、路由跳转、$http、获取元素等

    控制器,带状态 app.controller('editCtrl', ['$http', '$location', '$rootScope', '$scope', '$state', '$stateP ...

  3. AngularJS移动开发中的各种坑

    捂脸,辛酸泪ing...... 本文主要涉及部分在移动设备上特有的问题. 相对来说,Jquery侧重DOM操作,AngularJS是以视图模型和双向绑定为核心的. DOM操作的问题 避免使用 jQue ...

  4. AngularJS移动开发中的坑汇总

    使用AngualrJs开发移动App已经快半年了,逐渐积累了非常多AngularJS的问题,特别是对于用惯了Jquery的开发人员,转到AngularJS还是须要克服非常多问题的.不像Jquery那样 ...

  5. [转]AngularJS移动开发中的坑汇总

    使用AngualrJs开发移动App已经快半年了,逐渐积累了很多AngularJS的问题,特别是对于用惯了Jquery的开发者,转到AngularJS还是需要克服很多问题的.不像Jquery那样侧重D ...

  6. 如何通过热修复,搞定开发中的那些 Bug?

    作为程序员,Bug 修复终究是绕不开的话题,本期移动开发精英俱乐部讨论的主题便是 Bug 修复中的 Hotfix,即热修复.接下来让我们跟随大牛的脚步来了解 Hotfix,就算你不能一下豁然开朗,相信 ...

  7. gulp自己主动化任务脚本在HybridApp开发中的使用

    眼下做前端开发的同学可能都熟悉grunt.fis之类的自己主动化构建工具.事实上在HybridApp开发中我们也能够使用这些工具来简化我们的工作.gulp就是一个比grunt,fis都先进的构建工具. ...

  8. 【转】angularjs指令中的compile与link函数详解

    这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下   通常大家在 ...

  9. AngularJS进阶(十八)在AngularJS应用中集成科大讯飞语音输入功能

    在AngularJS应用中集成科大讯飞语音输入功能 注:请点击此处进行充电! 前言 根据项目需求,需要在首页搜索框中添加语音输入功能,考虑到科大讯飞语音业务的强大能力,遂决定使用科大讯飞语音输入第三方 ...

随机推荐

  1. 《java入门第一季》之泛型类引入

    首先用一个例子引入泛型类. 我定义一个Object类: package cn.it_03; public class ObjectTool { private Object obj; public O ...

  2. LTP语法分析

    http://blog.csdn.net/pipisorry/article/details/50306931 POS词性标注解释 词性标注(Part-of-speech Tagging, POS)是 ...

  3. 使用js动态添加组件

    在文章开始之前,我想说两点 1 自己初学js,文章的内容在大神看来可能就是不值一提,但是谁都是从hello world来的,望高   手不吝指教# 2 我知道这个标题起的比较蛋疼,大家看图就能说明问题 ...

  4. C++实现最小堆及插入,调整顺序,删除堆顶元素的操作

    上次用Java实现了最大堆的封装,这次就来写一下最小堆的实现吧 插入函数的思路: 向堆中插入元素有两种情况,一种是堆为空,那么就让插入值作为根节点即可:另一种是堆不为空,那么此时就要进行判断当前节点与 ...

  5. CodePen最佳实例分享

    原文地址: Chris Coyier's Favorite CodePen Demos 原文日期: 2013年8月13日 翻译日期: 2013年8月21日 CodePen: Build, Explor ...

  6. 一个CSS+jQuery的放大缩小动画效果

    日期: 2013年9月23日 作者:铁锚 // 今天帮朋友写了一些代码,自己觉得写着写着,好几个版本以后,有点满意,于是就贴出来. // 都是定死了的.因为需求就只有4个元素.如果是要用CSS的cla ...

  7. UITableViewBase UI_09

    1.UITableView API文档总结:      1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动. 2.UITableView是iOS中 ...

  8. Socket编程实践(1) --TCP/IP简述

    ISO的OSI OSI(open system interconnection)开放系统互联模型是由ISO国际标准化组织定义的网络分层模型,共七层, 从下往上为: OSI七层参考模型 物理层(Phys ...

  9. gc实例与gc报告的阅读

    gc报告的阅读 首先我们看一条gc报告 D:\杂项\java>java -verbose:gc -Xms20m -Xmx20m -Xmn10m -XX:+PrintGCDetails -XX:+ ...

  10. scrapy模拟登录微博

    http://blog.csdn.net/pipisorry/article/details/47008981 这篇文章是介绍使用scrapy模拟登录微博,并爬取微博相关内容.关于登录流程为嘛如此设置 ...