Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结

1. 本文范围 1

2. Angular的优点 1

2.1. 双向数据绑定 1

2.2. dsl化 2

2.3. 依赖注入 2

2.4. 指令 2

3. 手动绑定数据spa方式以及与ajax 与dwr的集成
2

4. 格式化数据 2

4.1. 多字段组合格式化 3

4.2. 输出html 4

5. 输出作为函数参数调用 4

6. 加载完成事件 5

7. 常见错误 5

7.1. Atitit.angular.js   FilterProvider  filter [$injector:unpr] 5

8. AngularJS的适合之处 5

8.1. Angular vs  jquery tmpl.js 6

9. Angular的问题 6

9.1. 不利于开发者进行调试, 6

9.2. 学习进阶难。 6

10. 参考 7

1. 本文范围

主要使用Angular绑定一个json列表到table。。

实现mvc html 模板功能。。

2. Angular的优点

2.1. 双向数据绑定

更加容易实现dsl

处理表单数据和编辑表格数据带来了很多优点

不过Jq的form序列化也是很简单的

在Angular中,操纵数据不是通过抓取和注入。一般通过数据绑定来实现,野蛮抓取注入数据。也能够改变每个组件的状态,不过在切换时就会暴露出问题。

2.2. dsl化

ng-show,ng-hide,ng-class和ng-if作为模板的控制语句——所有这一切都让人惊奇。

2.3. 依赖注入

2.4. 指令

3. 手动绑定数据spa方式以及与ajax 与dwr的集成

设置自动绑定数据为空列表

function listCtrl($scope) {

$scope.listO7 =[ ] ;

}

Click事件

function bindTableData(data)

{

$(‘#tabid1‘).scope().listO7 =data;

$(‘#formx‘).scope().$digest();

}

4. 格式化数据

需要建立一个模块filter 比如常见的日期格式化

var homeModule = angular.module("atiMod", []);

homeModule.filter(‘timeFmtO7‘,function(){

return function(item){

try{

return item.Format("yyyy-MM-dd hh:mm:ss");

}catch(e){return "";}

}

});

使用filter,使用竖杠管道符号

{{itemO7.ds_id|‘timeFmtO7‘}}

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

4.1.  多字段组合格式化

调用

{{itemO7.download_status+‘,‘+itemO7.startdownFlag+‘,‘+itemO7.trueDownFlag|statFmt}}

书写过滤器

homeModule.filter(‘statFmt‘,function(){

return function(item){

//alert(item);

var arr=item.split(",");

var downedflag=arr[0];

var startdownFlag=arr[1];

var failFlag=arr[2];

if(downedflag==1 && failFlag==1)

return "已下载";

if(  downedflag=="null" && startdownFlag==1 && failFlag=="null" )

return "下载中";

}

});

4.2. 输出html

angularJs输出html的时候,浏览器并不解析这些html标签,不知道angularjs如何实现这种功能的。

但是这里我们需要其显示angular输出的html能被浏览器解析怎么办呢?

通过api,发现通过指令 ng-bind-html来实现html的输出。

<td ng-bind-html="itemO7.downloadStatus+‘,‘+itemO7.startdownFlag+‘,‘+itemO7.trueDownFlag+‘,‘+itemO7.dsId |statFmt" > </td>

还需要通过通过$sce服务来实现html的展示。

homeModule.filter(‘statFmt‘,[‘$sce‘, function($sce){

return function(item){

//  alert(item);

var arr=item.split(",");

var downedflag=arr[0];

var startdownFlag=arr[1];

var failFlag=arr[2];

var dataid=arr[3];

if(  failFlag==3 )

return $sce.trustAsHtml("下载失败:<br>其他原因");

if(     failFlag==4 )

return $sce.trustAsHtml( "下载失败:<br>客户端空间满");

}

}]);

5. 输出作为函数参数调用

好像不能直接输出,只好借鉴输出

<a href="javascript:void(0)" onclick="stop(this.id,this)" id="{{itemO7.dsId}}"> 终止</a>

6. 加载完成事件

找了半天资料,没有找到完成事件的资料。。只好自己使用轮询的方式来实现了。。原理是在foreach哈面一个tag  使用angular写入。。检测这个tag的状态,如果可以,说明已经加载完成。。。

<div id="finishTag" style="display:none">{{‘...‘}}</div>

if(txt.indexOf("{",0)>=0 )  //can find {{ brk,,,not finish

{

logx(" find {{ ");

}

好像是异步的,需要进一步明确

7. 常见错误

7.1. Atitit.angular.js   FilterProvider  filter [$injector:unpr]

"Error: [$injector:unpr] http://errors.angularjs.org/1.2.9/$injector/unpr?p0=stateFmt1FilterProvider%20%3C-%20stateFmt1Filter\

新不上这个filter

原因:::估计浏览器缓存问题...

刷新..then ok

8. AngularJS的适合之处

AngularJS通过为开发者呈现一个更高层次的抽象来简化应用的开发。如同其他的抽象技术一样,这也会损 失一部分灵活性。换句话说,并不是所有的应用都适合用AngularJS来做。AngularJS主要考虑的是构建CRUD应用。幸运的是,至少90%的 WEB应用都是CRUD应用。但是要了解什么适合用AngularJS构建,就得了解什么不适合用AngularJS构建。

如游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用,和CRUD应用就有很大的不同,它们不适合用AngularJS来构建。像这种情况用一些更轻量、简单的技术如jQuery可能会更好。

8.1. Angular vs  jquery tmpl.js

格式化方面,tmpl更加方便,直接使用js函数即可。

9. Angular的问题

9.1. 不利于开发者进行调试,

常常输出信息离题十万八千里

9.2. 学习进阶难。

使用Angular需要学习大量的概念,包括但不限于:

· 模块

· 控制器

· 指令

· 作用域

· 模板

· 链式函数

· 过滤器

· 依赖注入

10. 参考

Atitit.加载完成事件的设计 angular.js

paip.提升效率--数据绑定到table原理和流程Angular js jquery实现 - attilax的专栏 - 博客频道 - CSDN.NET

Atitit. js mvc 总结(2)----angular 跟 Knockout o99 最佳实践 - attilax的专栏 - 博客频道 - CSDN.NET

我由Angular转向React,为什么?-CSDN.NET

将BootstrapJS和AngularJS结合使用以及为什么不用jQuery - OurJS

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 16:18:34

Atitit.angular.js 使用最佳实践 原理与常见问题解决与列表显示案例 attilax总结的相关文章

JS编程最佳实践

最近花了一周时间把<编写可维护的js> 阅读了一遍, 现将全书提到的JS编程最佳实践总结如下, 已追来者! 1.return 之后不可直接换行, 否则会导致ASI(自动分号插入机制)会在return 后插入一个分号. 2.一行语句最多不超过80个字符, 如果超过则应该在运算符后换行,并且追加两个缩进. 3.采用驼峰式命名,变量前缀为名词如:myName 函数应该以动词开始如:getName,常量应该以大写字母命名,如:MAX_COUNT, 构造函数首字母大写. 4.数字的写法: 整数:coun

atitit.导航的实现最佳实践and声明式编程

1. 顶部水平栏导航 1 2. 竖直/側边栏导航 1 3. 选项卡导航 1 4. 面包屑导航 1 5. 标签导航 1 6. 搜索导航 2 7. 分面/引导导航 2 8. 页脚导航 3 9. 20. 在不同页面上使用相同的导航代码 3 10. 结论大多数站点使用不仅仅一种导航设计模式 3 11. 參考\ 4 1. 顶部水平栏导航 2. 竖直/側边栏导航 3. 选项卡导航 4. 面包屑导航 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源

vue.js+boostrap最佳实践

一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变得更美观和更容易,同时vue.js又是可以绑定model和view(这个相当于MVC中的,M和V之间的关系),使得对数据变换的操作变得更加的简易,简化了很多的逻辑代码. 二.学习这篇文章需要具备的知识 1.需要有vue.js的知识 2.需要有一定的HTML.CSS.JavaScript的基础知识 3

转载 - 读网上文档 - 笔记 - JS 编程最佳实践(Best Practice)

原文地址: 1). JavaScript Best Practices: http://www.w3schools.com/js/js_function_closures.asp 2). JavaScript Closures http://www.w3schools.com/js/js_function_closures.asp 3). JavaScript 严格模式 http://blog.csdn.net/supersky07/article/details/14129179 1. 关于全

Atitit 词法分析器的设计最佳实践说明attilax总结

1.1. 手写的优点:代码可读,对源代码中的各种错误给出友好的提示信息,用户体验高,1 1.2. 使用状态表比较简单,dfa比较麻烦1 1.3. 优先递归 替换循环1 1.4. 内部分支switch替换if else1 1.5. 单独的db que状态,内部可以容易包含single quo1 1.6. 范例1 1.1. 手写的优点:代码可读,对源代码中的各种错误给出友好的提示信息,用户体验高,  产品级别的编译器需要对源代码中的各种错误给出友好的提示信息.而DFA在这方面无法满足需要 1.2. 

require.js 最佳实践

require.js(官网:http://www.requirejs.org/)是一个js库,相关的基础知识,前面转载了两篇博文:Javascript模块化编程(require.js), Javascript模块化工具require.js教程,RequireJS 参考文章 1. require.js的主要作用是js的工程化,规范化: 1)它是一个js脚本的加载器,它遵循AMD(Asynchronous Module Definition)规范,实现js脚本的异步加载,不阻塞页面的渲染和其后的脚本

angular js权威指南笔记

ng-app 属性声明所有被其包含的内容都属于这个 AngularJS 应用 只有被具有 ng-app 属性的 DOM 元素包含的元素才会受 AngularJS 影响 视图理解为模型状态的映射.当客户端的数据模型发生变化时,视图就能反映出这些变化 MVC 是一种软件架构设计模式,它将表现从用户交互中分离出来.通常来讲,模型中包含应用的数据和与数据进行交互的方法, 视图将数据呈献给用户,而 控制器则是二者之间的桥梁 当 AngularJS 认为某个值可能发生变化时,它会运行自己的事件循环来检查这个

Atitit. js mvc 总结(2)----angular 跟 Knockout o99 最佳实践

Atitit. js mvc 总结(2)----angular  跟 Knockout o99 最佳实践 1. 框架 angular 跟Knockout 1 2. 2. 简单的列表绑定:Knockout 1 3. foreach绑定 3 4. Sumup:hesh angular simply 3 1. Mvc优点 angular 功能包括 3 2. 2.1 数据绑定 就是MVVM 结构, 3 3. 2.10 动画效果, ng-animate 4 5. 参考 5 1. 框架 angular 跟K

atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传,避免一次使用内存使用过大的 2 2. Uuid还是原来文件名称:: 2 3. 监听器频繁地被调用 2 4. 结合wz easyui 2 4. 选型 2 5. Uploadify::yash js+flash 3 6. commons-fileupload:: 3 7. COS这个工具O'Reilly公司 3 8. 大的文件上传组件总结 3 5. 林吧实现ui Ajax+jq