基于angularJs+ui-router+bootstrap风格的表格生成指令
1 /** 根据参数定制表格
* api接口:
* form-model:[item1,item2,item3]
* form-properties:[
* {key:'',label:'',thClass:''}, key为item对象的key,label为该key对应的表头,thClass主要用于列少时平分一行
* ...
* ]
* 对应一行后面的编辑,删除,详情按钮
* form-actions:{
* edit/delete/detail:{
* stateUrl:'', 对应点击该按钮后跳转的路由状态
* stateParams:[{
* key:'', 用来拼接ui-router的sref-->({key:object.objectKey}),支持多参数传递。
* objectKey:'',
* }]
* }
* }
*示例
* <by-table tb-models="formModel" tb-properties="formProperties" tb-actions="formAction"></by-table>
*
*
* model用于初始表格数据
$scope.formModel = [
{id:1,name:"张三",sex:'男'},
{id:2,name:"李四",sex:'男'},
{id:3,name:"王五",sex:'男'}
]; thClass 主要用于珊格布局,控制其长度
$scope.formProperties = [
{key:'id',label:'ID'},
{key:'name',label:'姓名','thClass':'col-md-3'},
{key:'sex',label:'性别','thClass':'col-md-3'}
] 配合而ui-route 完成到增删改查的路由跳转
$scope.formAction = {
//stateParams:
//stateUrl({key:object.objectKey});
//add 不需要stateUrl
detail:{
stateUrl:'person.detail',
stateParams:{
key:'id',
objectKey:'id'
}
},
edit:{
stateUrl:'person.edit'
},
delete:{
stateUrl:'person.delete'
}
}
*/ angular.module('testApp')
.directive('byTable', function(){
return{
restrict: 'E',
templateUrl:'scripts/components/form/form-template/table.html',
scope:{
tbModels:'=',
tbProperties:'=',
tbActions:'='
},
link:function ($scope,$elem,$attr){
$scope.hasOper = false;
var notNull = function (data){
return !!data;
} //private action info
$scope._tbActions = {
detail:null,
delete:null,
edit:null
} // 必须传递一个数组
//输入[{key1,value1},{key2,value2}],
//输出key1:value1,key2:value2
var getParams = function(datas){
console.log("....");
var arr_len = datas.length;
var res = "";
var i=0;
if(arr_len<=0){
return "";
} res = datas[0].key +":tbModel." + datas[0].objectKey;
if(arr_len>1){
for(i=1;i<arr_len;i++){
res += (","+datas[i].key +":tbModel." + datas[i].objectKey);
}
}
return res;
} //get sref str by config
var getSref = function(dataObj){
var params = "";
var strtmp = "";
if(!dataObj.stateUrl){
return "";
}
if(dataObj.stateParams){
var tmp = getParams(dataObj.stateParams);
params = "({"+ tmp +"})";
}
strtmp = dataObj.stateUrl+ params;
return strtmp;
} //initOperContain:'edit','delete','detail'
var initOper = function(){
if($scope.tbActions.detail){
$scope._tbActions.detail = getSref($scope.tbActions.detail)
}
if($scope.tbActions.edit){
$scope._tbActions.edit = getSref($scope.tbActions.edit)
}
if($scope.tbActions.delete){
$scope._tbActions.delete = getSref($scope.tbActions.delete)
}
console.log($scope._tbActions.detail);
}
initOper(); //the oper is show?
if(notNull($scope.tbActions.edit)||notNull($scope.tbActions.delete)||notNull($scope.tbActions.detail)){
$scope.hasOper = true;
}
}
}
})
基于angularJs+ui-router+bootstrap风格的表格生成指令的更多相关文章
- [转]AngularJS+UI Router(1) 多步表单
本文转自:https://www.zybuluo.com/dreamapplehappy/note/54448 多步表单的实现 在线demo演示地址https://rawgit.com/dream ...
- angularJS ui router 多视图单独刷新问题
场景:视图层级如下 view1 --view11 --view111 需求:view11的一个动作过后,单独刷新view12 解决方式:修改层级设计 view1 --view11 --view111 ...
- Angularjs ui router,路由嵌套 父controller执行问题
解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...
- 【Bootstrap】 bootstrap-table表格组件
[Bootstrap-table] 顾名思义,这个组件专注于bootstrap风格的表格的设计,并且提供了很多表格的基础和进阶的功能,给我们开发前端的表格省下很多力气. 本文主要参考这位博主的系列文章 ...
- AngularJS 使用 UI Router 实现表单向导
Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...
- [转]AngularJS 使用 UI Router 实现表单向导
本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...
- Blazor组件提交全记录: FullScreen 全屏按钮/全屏服务 (BootstrapBlazor - Bootstrap 风格的 Blazor UI 组件库)
Blazor 简介 Blazor 是一个使用 .NET 生成的交互式客户端 Web UI 的框架.和前端同学所熟知的 Vue.React.Angular 有巨大差异. 其最大的特色是使用 C# 代码( ...
- 自己写的基于bootstrap风格的弹框插件
自己写的一款基于bootstrap风格的弹框插件,暂时只有确认框.提示框.后续功能扩展.bug修改再更新. ;(function($){ //默认参数 var PARAMS; var DEFAULTP ...
- bootstrap基础学习小记(二)排版、列表、代码风格、表格
排版——标题.副标题.段落(正文文本).强调内容.粗体.斜体.强调相关的类.文本对齐 <!DOCTYPE HTML> <html> <head> <meta ...
随机推荐
- 卸载mac多余的音频驱动:internal audio driver corel painter
$ kextstat | grep corel 130 0 0xffffff7f81042000 0x4000 0x4000 com.corel.painter.PainterAudioDriver ...
- poj3181 背包+大数
http://poj.org/problem?id=3181 Dollar Dayz Time Limit: 1000MS Memory Limit: 65536K Total Submissio ...
- Node.js小白开路(一)-- fs篇
文件操作在我们的日常功能模块之中是十分的常见的内容,nodeJS也不例外的为我们提供了之一操作内容,当时在我们了解文件操作的之前我们先来了解一下链接. 连接可以理解成为一个纸箱相关文件内容的地址,其主 ...
- Shiro快速入门
1.什么是Shiro Shiro是Java的一个安全框架, 完成权限控制的任务. 权限控制的基本功能: 认证(让系统知道你是谁); 授权(让系统知道你能做什么)权限控制常用的技术: 过滤器/拦截器, ...
- 【专题】区间dp
1.[nyoj737]石子合并 传送门:点击打开链接 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这 ...
- MongoCola使用教程 2 - MongoDB的Replset 初始化和配置
前言 首先再次感谢博客园的各位朋友.正是你们的关注才让我有信心将这个工具开发下去. 这周同样也有热心网友对于MongoCola存在的问题给予了反馈. 这次工具更新到了版本1.20,强化的地方是增加了R ...
- Node多进程相关
现状: 目前使用child_process.fork实现多进程,一个center.js负责任务分配及相关状态管理,一个worker.js负责任务执行. center.js结构: 1) 一个task_q ...
- UI-了解ISO
1. iOS学习路线: C语言:数据类型.流程控制.函数.指针.字符串.结构体.枚举.预处理: OC:面向对象.内存管理.分类.协议.Block.KVC/KVO.Foundation框架: iOS基础 ...
- DRF 返回数据的封装,和分页
DRF 返回数据的封装,和分页 1 返回值的 封装 自定义一个类,初始化基本的返回数据信息 class BaseResponse(object): """ 初始化基本的返 ...
- 使用 minio 搭建私有对象存储云。aws-php-sdk 操作object
How to use AWS SDK for PHP with Minio Server aws-sdk-php is the official AWS SDK for the PHP program ...