angularjs常用代码块

9 篇文章 0 订阅
5 篇文章 0 订阅
功能 代码
页面路由 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不会被销毁,因此使用标志位时可能会导致逻辑混乱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值