js代码难以调试,纠错,因此记录这些代码块,便于调错
功能 | 代码 |
自定义指令属性 的方法 传递 |
这么变态的需求有没有?在自定义的指令的属性中定义外部方法,然后在指令中获取到 句柄。如下:
<ul storetree id="treeDemo" class="ztree" showIcon="showIconForTree" onClickTest="clickTest()"></ul> 对,这里有个 clickTest()方法,需把这个方法传递进去 XX.directive('',function(){ onClick: function(event,treeId,treeNode,clickFlag){ eval(attrs.onclicktest'); //自动变小写 }, }) 是的,用eval方法就可以了
|
页面路由 |
var app = angular.module('MyApp', ['ngResource','ngRoute','ngGrid']).config(function ($routeProvider) { $routeProvider .when('/store', { templateUrl: 'page/store.html', controller: '' }) .when('/schema', { templateUrl: 'page/schema.html', controller: '' }) .when('/storeinfo', { templateUrl: 'page/storeinfo.html', controller: '' }) }); |
加入模块 |
var app = angular.module('MyApp', ['ngResource','ngRoute','ngGrid']) 引入新的功能千万别忘记加入模块
|
controller间交互 | 通过广播,子->父->子,controller间层级通过html的层级来定,也可在js中指定app.controller("a1").controller("a2") 1 发送者 $scope.$emit("Achange", params); 2 父接受者 $scope.$on("Achange", function (event,params) { $scope.$broadcast("AChangeFromParent",params); }); 3 接受者 $scope.$on("AChangeFromParent", function (event, params) { ...dosth } |
apply方法 | 为何要用applay?强制进行数据绑定或触发动作,有时方法并不执行,比如$http请求并不会被触发,此时需调用apply方法,从开发中来看$http请求最容易发生该情况,而且$http是异步回调,次序一定要当心。apply方法参考http://www.cnblogs.com/penghongwei/p/3398361.html |
http请求 |
$http({ url:URL, method:"GET" }).success(function(data){ $scope.spaceSchemaList = data; }); |
ng-grid | ng-grid中加入其它控件,比如select的方法是在cellTemplate或editableCellTemplate中加入html元素,其中貌似cellTemplate是编辑前,editableCellTemplate是编辑后$scope.selectCell ="<select ng-model='COL_FIELD' ng-class='\'colt\' + col.index' ng-input='COL_FIELD' ng-options='id as name for (id, name) in statuses' ng-blur='updateEntity(row)'></select>"; $scope.buttonCell = '<button class="btn btn-link" ng-click="deleteDFV(row)" ng-show="secondShow">删除</button>'; $scope.gridOptions = { data: 'store.defaultValues', enableCellEdit: true, columnDefs: [{field: "name",displayName:"名称"}, {field:"dType",displayName:"类型", editableCellTemplate: $scope.selectCell ,cellFilter: 'mapStatus'}, {field:"defaultValue",displayName:"默认值"}, {field:"evalExp",displayName:"表达式"}, {displayName:"操作",cellTemplate:$scope.buttonCell, enableCellEdit: false} ] }; 比如,在selectCell中定义了ng-options ng-blur等指令,在columnDefs中定义了Filter,而后是指令及服务的定义 app.filter('mapStatus', function( StatusesConstant ) { return function(input) { if (StatusesConstant[input]) { return StatusesConstant[input]; } else { return 'unknown'; } }; }) app.factory( 'StatusesConstant', function() { return { 1: 'preset', 2: 'evaljs' }; }); |
table新增列 | 加入辅助行,首先隐藏,后点击显示即可。辅助行中关联的为已angularjs辅助对象,当新增成功保存时才会添加到正式数据中去,注意,辅助对象的添加必须采用深拷贝,否则辅助对象都会关联到同一引用上,无论新增多少次,都与最后一次相同。 |
select | select的常用用法<select class="selectdatatype" ng-model="property.complexTypeName" ng-options = "o.id as o.id for o in spaceSchemaList"> <option >--请选择--</option> </select> 如代码所示ng-model为绑定的对象,ng-options形式为 o.value as o.name for o in List, 其中value为真实传递的值,name为html上显示的值 |
服务 |
即单例对象,用于将操作、数据等集中管理,避免分散。·如
app.factory( 'StatusesConstant', function() { return { 1: 'preset', 2: 'evaljs' }; }); 如上所示返回了一个对象 |
resource服务 |
storeInstance.get({setName:treeNode.name}).$promise.then( function(resolve){ $scope.store = resolve; $scope.set.setName = $scope.store.entitySetName; }, function(reject){console.log("get store failed")} ) 如代码所示,使用了$promise代理对象,代理对象有n多好处,具体请自行参考 服务定义为: app.factory('storeInstance',['$http','$resource',function($http,$resource){ return $resource('/MDE/DSE/EntitySet(\':setName\')', {setName:'@setName'}, {create:{method:'PUT'},params:{},isArray:false} ) ; }]); 其中第二个参数{setName:'@setName'}为入参, 第三个参数{create:{method:'PUT'},params:{},isArray:false}为给该服务新定义了一个方法,方法名为create,该方法为一个put请求,params:{}表示没有多余参数,因此输入参数与{setName:'@setName'}相同,实例如下 storeInstance.create({setName:treeNode.name}) |
新增和修改 | 新增和修改一般都是点击同一个按钮,因此常用方法是使用标志位,但由于为one-page-application,controller不会被销毁,因此使用标志位时可能会导致逻辑混乱 |
相关推荐
- 使用`$ocLazyLoad`:`ocLazyLoad`是一个用于AngularJs的模块,它允许异步加载代码块和模板。通过配置,可以将特定的控制器、服务、模板等按需加载到应用中。 - 结合`ui-router`使用:AngularJs的路由管理模块`ui-...
1. **ng-repeat指令**:ng-repeat是AngularJS中用于数据绑定的关键指令之一,它允许开发者在HTML模板中重复一段代码块以展示数组中的每个元素。ng-repeat不仅用于简单的数组,还可以用于对象数组,并且可以使用order...
通过控制器可以创建可重用的代码块,从而提高代码的维护性和可读性。 6. `ng-options`:这个指令用于在`<select>`元素中创建一个下拉列表,并可以利用对象和数组循环来动态输出列表项。`ng-options`可以用来绑定一...
在AngularJS的世界里,组件(Component)是一种强大的构造块,用于构建复杂的用户界面。它们是可重用的自包含代码单元,可以独立于其他组件工作,并通过属性接收数据,通过事件发送数据。AngularJS的组件化特性使得...
在Angularjs开发中,服务(Service)是用于封装功能,提供可重用代码块的组件。自定义服务的方式有多种,其中最常用的有三种:通过$provider创建provider服务、通过$factory创建factory服务和通过$service创建service...
- **依赖注入**:AngularJS自动管理对象的创建和依赖关系,降低了代码间的耦合度。 ### 2. Node.js Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行开发。Node.js...
在使用Atom Snippets时,开发者只需要输入一个特定的触发词,然后按下Tab键,就能自动扩展成完整的代码块。这对于日常编码工作流来说是一个巨大的提升,特别是当涉及到大量重复性代码时。例如,在AngularJS中,输入`...
【标题】中的“Grains”很可能是一个项目或者代码库的名称,它包含了多种编程语言的示例代码,如Scala、R、Python、Java、C#、C/C++、JavaScript、TypeScript以及AngularJS。这个项目可能旨在展示这些语言在特定场景...
- **可重用性**:方便复用代码块。 - **提高灵活性**:灵活控制视图行为。 #### 五、AngularJS的应用场景 AngularJS适用于各种类型的Web应用开发,尤其是那些需要高度交互性和动态内容的应用。例如,企业级应用、...
4. **服务**:提供可复用的代码块,例如$http服务用于发送HTTP请求,$rootScope服务是所有控制器的父作用域。 5. **模块**:用于组织应用的各个部分,可以包含控制器、服务、指令等。 6. **控制器**:负责处理视图和...
1. 第一个CSS代码块定义了一种字体样式,包括斜体、无衬线字体、中等粗细、小型大写字母和140%行高。 2. 第二个CSS代码块定义了一个列表样式,包括内部符号、方形符号、自定义图像以及内边距。 3. 第三个CSS代码块...
- **模板支持**:Spket还提供了丰富的代码模板,方便开发者快速生成常用的代码块,如函数、循环、条件判断等。 - **文档查看**:对于JavaScript库和框架,如jQuery、AngularJS等,Spket提供了相关的API文档查看功能...
Zen Snippets 是 Sublime Text 的一个特性,允许开发者定义一系列预设的代码块,只需输入简短的触发词,就能自动扩展成完整的代码结构。在 Angular-Zen 中,这些 snippets 针对 AngularJS 的核心概念和常用指令进行...
- **函数**: 函数是JavaScript程序的基本构建块,了解如何定义和使用函数对于编写高效、可维护的代码至关重要。 - **对象**: 对象是JavaScript中最基本的数据结构之一,学习如何创建和操作对象是JavaScript开发的...
- **代码折叠**:能够隐藏或展开代码块,提高代码可读性。 - **宏功能**:可以录制并播放一系列操作作为宏,提高工作效率。 - **应用场景**: - **代码编辑**:适用于日常的编码工作,尤其是对Windows用户来说。 ...
13. AngularJS常用服务:`$http`用于HTTP请求,`$scope`作为模型对象,`$timeout`延迟执行函数等。 14. Vue.js内置指令以`v-`开头,如`v-if`, `v-for`, `v-bind`等。 15. SVG绘制矩形:`...
`<% %>`用于插入Java代码块,`<%= %>`用于输出变量值,`<jsp:action>`标签用于执行特定的动作,如包括其他页面或转发请求。 3. **JSP指令**:如`<%@ page %>`, `<%@ include %>`, `<jsp:forward>`等,它们用于配置...
在实际项目中,可以使用现成的库和框架来简化JS前台分页的实现,例如jQuery Pagination插件、Bootstrap的Pagination组件、AngularJS的ng-infinite-scroll模块等。这些工具通常已经封装好了大部分功能,只需要简单的...
3. **函数与作用域**:函数是可重复使用的代码块,而作用域决定了变量在何处可以被访问。 4. **对象与原型链**:JavaScript中的对象是键值对的集合,原型链则用于实现继承。 5. **异步编程**:包括回调函数、Promise...
2. **CoffeeScript语法**:CoffeeScript引入了许多语法糖,如缩进代替大括号表示代码块,`->`和`=>`用于定义函数,以及更简洁的变量声明和赋值。 3. **变量与作用域**:在CoffeeScript中,变量使用`@`(在类中)或`...