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. pig的内置函数小总结(不全)

    piggybank里面有很多函数,可以用register和define调用.也可以用java仿照piggybank自行开发. 比如读sequence二进制文件,可以用piggybank里面函数Sequ ...

  2. java实现:将一个数各个位数相加

    前面已经实现过这个程序,现在我们就不多说了,直接更改C的源码,实现这个JAVA程序. import java.util.Scanner; public class HelloWorld { publi ...

  3. 毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选

    毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.i ...

  4. (NO.00002)iOS游戏精灵战争雏形(八)

    子弹的初始化工作前2篇基本做好了,下面就是如何射出子弹. 通常来说,子弹射向目标对象,需要走一条直线.直线由2点定位,分别为发射点和目标点. 发射点就是开枪精灵自身的位置,目标点则为敌方精灵的位置,大 ...

  5. ubuntu 开发环境配置及安装 nodejs

    ubuntu 开发环境配置及安装 nodejs 1 安装nodejs $ sudo apt-get install build-essential $ sudo apt-get install gcc ...

  6. Gradle 1.12用户指南翻译——第二十一章. Gradle 插件

    昨天晚上只顾着和女朋友看<匆匆那年>电视剧的最后几集,所以说好的Android文档<Gradle 插件用户指南>第五章自然也没翻译多少.所以今天也发不了第五章的翻译了,就发几个 ...

  7. IntelliJ Idea + Maven + Junit

    Caculate.java package com.yxj.TestJunit; /** * Created by ubd on 15-4-17. */ public class Caculate { ...

  8. Linux特殊权限分析(第二版)

    SetUID[权限值=4] 问题:为什么普通用户可以修改自己的密码? ll $(which passwd) 1.SetUID:当一个可执行程序/命令具有SetUID 权限,用户执行这个程序时,将以这个 ...

  9. 【面试笔试算法】Problem 9: 腾讯2016年研发实习笔试题:最长回文子串

    (一)题目 问题:求给定字符串s的回文(palindrome)子串中,长度最大的回文子串的长度. 回文(palindrome)是指从左往右读和从右往左读字符串,看到的字符串都是一样的.比如" ...

  10. eclipse或者AS链接手机真机之后,logcat里面日志信息乱跳

    乱跳的日志信息不会对应用产生影响,但是它会影响视觉,影响查看logcat.那主要原因在哪里呢 ? 这是由于手机里面,正在的运行的进程太多导致的.^_^ 因此课件添加过滤器的作用之大. 对了,在logc ...