代码改变世界

随笔分类 -  AngularJs

细说angular Form addControl方法

2014-02-22 09:30 by 破狼, 10193 阅读, 收藏, 编辑
摘要: 在本篇博文中,我们将接触angular的验证。angular的验证是由form 指令和ngModel协调完成的。今天博主在这里想要说的是在验证在的一种特殊情况,当验证控件没有没有name属性这是不会被form捕获的。或者是你希望在ngRepeat中使用动态表达式。下面且让我们先来从angular源码中看起如下:首先是ngModel: var ngModelDirective = function() { return { require: ['ngModel', '^?form'], controller: NgModelController, ... 阅读全文

Angularjs中文版本开发指南发布

2014-02-16 15:49 by 破狼, 46844 阅读, 收藏, 编辑
摘要: 从本人开始在写关于Angularjs的文章开始,也算是见证了Angularjs在国内慢慢的火起来,如今的Angularjs正式如日中天。想知道为什么Angularjs会这么火,请移步angularjs移除不必要的$watch.也是一次偶然的机会,在Angular.js中文社区群里相遇一群Angula... 阅读全文

为Angularjs ngOptions加上index解决方案

2014-02-15 22:33 by 破狼, 16127 阅读, 收藏, 编辑
摘要: 今天在Angularjs交流群中有位童学问道如何为Angular select的ngOptions像Angularjs的ngRepeat一样加上一个索引$index.其实对于这个问题来说Angular本身并未提供$index之类的变量供使用。但是也不是说对于这个问题我们就没有解决方案。把这个问题换成角度来看,我们所需要的就是js数组的下标,所以我们如果我们能够在对象上加入下标,使用表达式作为option的label就能解决了。但是第一印象让我想起的是js数组本来就是一个key/value的对象,只是key为数组下标而已,所以有了如下之设计:html: js:$scope.getDesc1 =. 阅读全文

Angular ngClick 阻止冒泡和默认行为

2014-02-11 23:29 by 破狼, 68035 阅读, 收藏, 编辑
摘要: 这其实是一个很简单的问题,如果你认真查看过Angular官方的API文档,本来不想记录的。但是这个问题不止一次的被人问起,所以今天在记录在这里。在Angular中已经对一些ng事件如ngClick,ngBlur,ngCopy,ngCut,ngDblclick…中加入了一个变量叫做$event.如ngClick在官方文档是这么描述的:Expression to evaluate upon click. (Event object is available as $event)在查看Angular代码ngEventDirs.js: var ngEventDirectives = {}; fo... 阅读全文

ngCloak 实现 Angular 初始化闪烁最佳实践

2013-12-28 21:42 by 破狼, 35439 阅读, 收藏, 编辑
摘要: 在做angular的SPA开发时,我们经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁。对于这个问题由于JavaScript去操作DOM,都会等待DOM加载完成(DOM ready)。对于angular会在DOM ready完... 阅读全文

angularjs组件之input mask

2013-12-15 20:36 by 破狼, 15053 阅读, 收藏, 编辑
摘要: 今天将奉献一个在在几个angularjs项目中抽离的angular组件 input mask。在我们开发中经常会对用户的输入进行控制,比如日期,货币格式,或者纯数字格式之类的限制,这就是input mask的使用场景,在项目中也是会经常被提及需的需求之一。当然在官方的angular-ui ui-utils中有一个相应的组件叫做ui-mask,但是其mask功能是很初级脆弱的。所以我希望能得到一个更强大的mask组件。我所知的jquery.inputmask就是这样一个我所期望的强大的mask组件,所以我不必再去重造轮子,好的软件就是为了不停被重复利用。所以写了一个adapter,https:/ 阅读全文

angular ng-model类型格式转化

2013-12-15 09:43 by 破狼, 25077 阅读, 收藏, 编辑
摘要: 在angular开发中我们经常会遇见输入框中的string的值,却想在scope上的model表现为整型、浮点、货币,或者在radio的value是一个true,false的Boolean类型,一组check box的vlue组成一个Array的数组类型,因为我们的后台程序的model设计接口如此。你是否还在后台应用程序或者ajax提交前做mapper,还在重复着着伪angular的做法?在本人github创建了一个开源项目[https://github.com/greengerong/ngmodel-format](https://github.com/greengerong/ngmodel 阅读全文

prerender-SPA程序的SEO优化策略

2013-12-09 01:22 by 破狼, 12120 阅读, 收藏, 编辑
摘要: 随着web2.0的兴起,ajax的时代已经成为了事实,更如今Knockout,backbone, angular,ember前端MDV(model driver view)框架强势而来,Single Page Application已经为大家所熟悉了。如今常见的SPA程序,restfull和前端MDV之类的框架能够实实在在的减少我们的代码开发量,让我更多的注意力关注在真正的业务逻辑上。在众多前端MDV框架从博客中可以看出来笔者还是钟爱于angular,然而服务端平台的选择的话:在.net平台笔者会首选webapi+oData,jvm平台spring restfull。但是相应带来的是搜索引擎优 阅读全文

angularjs ng-option ie issue解决方案

2013-12-08 18:10 by 破狼, 5489 阅读, 收藏, 编辑
摘要: 最近遇见angularjs 在IE上当使用ng-options作为select的选项数据源,并且被套在ng-switch(ng-transclude)之类的,当angular上得ng-options数据源model改变后,在IE上并不渲染。在一阵的测试和阅读相关文档后最后确认为:因为ng-switch(ng-transclude)是为了使其scope为原来的父scope,在父scope上生成了DOM后才克隆(cloneNode)到指定的指令位置。然而IE在对于select克隆的节点,不会主动去触发重绘,所以才有了上面的issue。问题确定了,那我们所需要做的就是手动的去触发让IE对Select 阅读全文

angularjs移除不必要的$watch

2013-08-20 00:40 by 破狼, 25165 阅读, 收藏, 编辑
摘要: 在我们的web page,特别是移动设备上,太多的angular $watch将可能导致性能问题。这篇文章将解释如何去移除额外的$watch提高你的应用程序性能。 $watch如果不再使用,我们最好将其释放掉,在angular中我们可以自由的选择在什么时候将$watch从$watch列表中移除... 阅读全文

Angular.js Services

2013-08-18 11:28 by 破狼, 37763 阅读, 收藏, 编辑
摘要: Angular带来了很多类型的services。每个都会它自己不同的使用场景。我们将在本节来阐述。 首先我们必须记在心里的是所有的services都是singleton(单例)的,这也是我们所希望得到的预期结果。下面让我开始今天的services之旅吧:Constant示例:app.constant('fooConfig', {config1: true,config2: "Default config2"}); constant是个很有用的东东,我们经常会用于对directive之类的做配置信息。所以当你想创建一个directive,并且你希望能够做一些配 阅读全文

(翻译)Angular.js为什么如此火呢?

2013-08-11 21:02 by 破狼, 26541 阅读, 收藏, 编辑
摘要: 在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View))JavaScript框架,其是Google推出的SPA(single-page-application)应用框架,其为我们的web应用开发增加不少魔法变换。 我可以花整天的时间告诉你为什么你必须在新项目尝试angular.js,但是我觉得还是百说不如一练。数据绑定和scopes(作用域) 首先第一个浮出大脑的问题是:angular支持数据绑定吗?下面让我们来了解angular.js的数据... 阅读全文

集成服务监控器-green.monitor发布

2013-05-26 18:42 by 破狼, 2117 阅读, 收藏, 编辑
摘要: 在大型企业应用开发中,一个项目经常需要依赖于多个项目集成,经常某个集成服务的升级或者不工作,会导致你所工作的服务也挂掉,甚至影响你的开发流程。你是否还在接到测试团队或者运维团队的某个Bug,而自己花费了大量时间终于查出来是某个集成服务升级或异常,在这里浪费了大量时间,在笔者为所在项目建立了一个第三方集成服务监控的Monitor,去实时监控项目所依赖的所有集成服务,数据库。现在开源在github https://github.com/greengerong/green-monitor,在其sample目录下有个使用demo。mavendependency<dependency> &l 阅读全文

细说Angular ng-class

2013-05-22 09:41 by 破狼, 193521 阅读, 收藏, 编辑
摘要: 在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJO(plain object javascript object),与view完全的隔离(交互angularjs框架的职责。但在某些项目中看见controller涉及DOM的元素最多的是在controller scope上定义某变量,其值为class name,形如:function ctr($scope){ $scope.test =“classname”;}<div class=”{.. 阅读全文

Angularjs Controller 间通信机制

2013-04-16 20:54 by 破狼, 70489 阅读, 收藏, 编辑
摘要: 在Angularjs开发一些经验总结随笔中提到我们需要按照业务却分angular controller,避免过大无所不能的上帝controller,我们把controller分离开了,但是有时候我们需要在controller中通信,一般为比较简单的通信机制,告诉同伴controller我的某个你所关心的东西改变了,怎么办?如果你是一个javascript程序员你会很自然的想到异步回调响应式通信—事件机制(或消息机制)。对,这就是angularjs解决controller之间通信的机制,所推荐的唯一方式,简而言之这就是angular way。 Angularjs为在scope中为我们提供了冒泡. 阅读全文

Angularjs的IOC Inject分析

2013-03-27 00:50 by 破狼, 10462 阅读, 收藏, 编辑
摘要: 在上一篇《Angularjs开发一些经验总结》中提到angular开发中的IOC inject优先,所以在这节将引用angularjs的注入代码来分析angularjs的注入方式。在《再谈angularjs DI(Dependency Injection)》中提到angularjs的注入方式分为3中方式,如果你还不清楚的请移步。推断式注入:在angularjs中我们可以在我们需要注入的地方按照名称注入,这里要求参数名称必须和注入服务实例名称相同,一种名称约定,angularjs会提取参数名称查找相应DI实例注入;:标记注入:在angularjs中我们可以利用$inject标注DI注入,这里需. 阅读全文

Angularjs开发一些经验总结

2013-03-24 17:08 by 破狼, 59545 阅读, 收藏, 编辑
摘要: 在去年到今年参与了2个使用Angularjs作为客户端开发框架的项目开发。主要利用asp.net web api作为restfull服务提供框架和angularjs结合。Angularjs作为html的扩展,旨在建立一个丰富的动态web应用,通过Directive建立一套html扩展的DSL模型,利用PM模式变形MVVM(在网上很多称MVC模式,本人认为在angular0.8是属于经典MVC模式,但在1.0把scope独立注入过后,更倾向于MVVM模式,这将会后续随笔中写道)简化前端开发和使得前端业务逻辑得以分离,view和表现逻辑的分离,更便于维护,扩展。Angularjs本来就是采用TD. 阅读全文

开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)

2012-12-20 21:50 by 破狼, 3542 阅读, 收藏, 编辑
摘要: 关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图。这里是最近学习CoffeeScript的练习版。 CoffeeScript是一门简洁的,构架于JavaScript之上的预处理器语言,可以静态编译成JavaScript,语法主要受ruby和python影响,目前已经为众多rails和node项目采用。CoffeeScript不是JavaScript的超集,也不是完全替代品。CoffeeScript有点在于:更少,更紧凑,和更清晰的代码通过规避和改变对JavaScript中不良部分的. 阅读全文

Javascript覆盖率(jstd)报表解析Maven插件

2012-12-16 22:03 by 破狼, 1736 阅读, 收藏, 编辑
摘要: 最近项目中希望加入javascript覆盖率统计,由于项目的单元测试用的google的jstd(javascript test driver),jstd生成<config filename>-coverage.dat LCOV 格式,这是一种linux上格式,在window上网上搜寻了很久没找到可用的maven组件。最后狠下心来自己写一个。代码已经放在github上,并且maven插件也成功release到官网。coverage 文件格式: 项目主要采用java将coverage文件解析成java object在利用json序列化输出到固定位置的javascript文件。在利用an 阅读全文

开源:Angularjs示例--Sonar中项目使用语言分布图

2012-12-02 11:24 by 破狼, 4756 阅读, 收藏, 编辑
摘要: 在博客中介绍google的Angularjs 客户端PM模式框架很久了,今天发布一个关于AngularJs使用是简单示例SonarLanguage(示例位于Github:https://github.com/greengerong/SonarLanguage)。本项目只是一个全为客户端的示例项目。项目的初始是我想看看在公司的项目中使用语言的分布比例,看看C#的份额,这一年一直坐着Java项目,却还是喜欢着C#,这只是个人问题,不存在语言之争。公司的项目在持续集成CI后都会传递build数据到Sonar产生报表。所以我可以在Sonar获取到项目和项目使用语言,并且Sonar Restfull . 阅读全文