angularJS ng-grid 配置

以下是按我的需求修改的 简单的demo  可以自己扩展

HTML:

<!DOCTYPE html>
<html class="no-js" ng-app="test"><!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
    <title></title>
    <meta content="width=device-width" name="viewport">

    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css" />
    <link href="css/ui-grid.min.css" rel="stylesheet">

    <script src="js/jquery-1.11.1.min.js"></script>
    <script src="js/angular.js"></script>
    <script src="js/ui-grid.min.js"></script>

    <style>
        body {
            padding: 60px;
            /*min-height: 600px;*/
        }
        .grid {
            width: 1200px;
            /*height: 5000px;*/
            margin:0 auto;
        }
        .placeholder {
            height: 50%;
            width: 50%;
            border: 3px solid black;
            background: #ccc;
        }
        .nav-ul{
            overflow: hidden;
            zoom:1;
        }
        .nav-ul li{
            float: left;
            list-style: none; margin-right: 15px;
            -webkit-user-select: none; /* Chrome all / Safari all */
            -moz-user-select: none; /* Firefox all */
            -ms-user-select: none; /* IE 10+ */ /* No support for these yet, use at own risk */
            -o-user-select: none;
            user-select: none;
        }
        .nav-ul li a{
            cursor: pointer!important;
        }
        .nav-ul li p.active{
            color:red;
        }
        .nav-ul li input[type=‘checkbox‘]{
            position: relative;
            top: 1px;
        }
    </style>
</head>
<body ng-controller="Main">
<!-- <h1>Test</h1> -->

<!-- <div class="row main"> -->
<h2>Grid{{gridName}}  </h2>
<!--<ul class="nav-ul">-->
    <!--<li>address.state <a ng-click="addColumn(‘address.state‘,150)">[+]</a> <a ng-click="removeColumn(‘address.state‘)">[-]</a></li>-->
    <!--<li>address.zip <a ng-click="addColumn(‘address.zip‘,150)">[+]</a></li>-->
    <!--<li>company <a ng-click="addColumn(‘company‘,150)">[+]</a></li>-->
    <!--<li>email <a ng-click="addColumn(‘email‘,100)">[+]</a></li>-->
    <!--<li>phone <a ng-click="addColumn(‘phone‘,100)">[+]</a></li>-->
    <!--<li>about <a ng-click="addColumn(‘about‘,100)">[+]</a></li>-->
<!--</ul>-->
<!--<ul class="nav-ul">-->
    <!--<li ng-repeat="col in baseData">-->
        <!--{{col.name}}&nbsp;<a ng-click="addColumn(col.name,col.width)">[+]</a>&nbsp;<a ng-click="removeColumn(col.name)">[-]</a>-->
    <!--</li>-->
<!--</ul>-->
<!--<ul class="nav-ul">-->
    <!--<li ng-repeat="col in baseData">-->
        <!--<p class="{{col.name}} active">{{col.name}}&nbsp;<a ng-click="addColumn(col.name,col.width,col.key)">[+]</a>&nbsp;<a ng-click="removeColumn(col.name)">[-]</a></p>-->
    <!--</li>-->
<!--</ul>-->
<ul class="nav-ul">
    <li ng-repeat="col in baseData">
        <label><input ng-click="changeColumn(col.name,col.displayName,col.width,col.key,$event)" type="checkbox" checked/>&nbsp;{{col.displayName}}</label>
    </li>
</ul>
<!--<div ui-grid="gridOptions" class="grid" ui-grid-resize-columns></div>-->
<div ui-grid="gridOptions" class="grid" ui-grid-selection ui-grid-edit ui-grid-importer ui-grid-exporter></div>
<!-- <div class="placeholder"> -->
<!-- </div> -->

<br>
<br>
<style>
    .grid1467082016751 .ui-grid-render-container-body .ui-grid-viewport{
        height: inherit!important;
    }
</style>
<script>
    var iArray = [
        { name:‘id‘,displayName:"编号", width:50 , key:1},
        { name:‘name‘,displayName:"姓名", width:100, pinnedLeft:true , key:2},
        { name:‘age‘,displayName:"年龄", width:100, pinnedRight:true, key:3 },
        { name:‘address.street‘,displayName:"街道", width:150 , key:4 },
        { name:‘address.city‘,displayName:"城市", width:150, key:5 },
        { name:‘address.state‘,displayName:"社区", width:150 , key:6},
        { name:‘address.zip‘,displayName:"详细地址", width:150, key:7 },
        { name:‘company‘,displayName:"公司名称", width:120 , key:8},
        { name:‘email‘,displayName:"邮箱", width:100, key:9},
        { name:‘phone‘,displayName:"手机", width:200 , key:10},
        { name:‘about‘,displayName:"关于", width:300 , key:11}
    ];
//    iArray.sort(function(a,b){
//        if(a.key> b.key) return 1;
//        if(a.key> b.key) return -1;
//        return 0;
//    })
    var iArray2 = iArray.concat();//复制数组1array1.concat()

    var app = angular.module(‘test‘, [‘ui.grid‘, ‘ui.grid.pinning‘, ‘ui.grid.resizeColumns‘]);
    app.controller(‘Main‘, function($scope, $http) {
        $scope.gridOptions = {};
        $scope.gridOptions.columnDefs = iArray2;
        $scope.baseData = iArray;
        $scope.gridName = "员工信息";
        $scope.datas = null;
        var dataName = null;

        $http.get(‘https://rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json‘,{params: {pageSize:10,pageNo:3}
        }).success(function(data) {
            $scope.datas = data;
            dataName = data;
            $scope.gridOptions.data = dataName;
        });

        $scope.getFields = function () {
            var data = $scope.$parent[dataName];
            if (data && data.length > 0) {
                var keys = _.keys(data[0]);
                return _.reject(keys, function (key) {
                    return _.find($scope.columnDefs, function (col) {
                        return col.field === key;
                    });
                });
            }
            return [];
        }

        $scope.changeColumn = function (field,displayName,width,key,$event){
            if( $($event.target).prop("checked") ){
                $scope.addColumn(field,displayName,width,key);
            }else{
                $scope.removeColumn(field);
            }
            return false;
        }

        $scope.addColumn = function (field,displayName,width,key) {
            var index = $scope.getIndex($scope.gridOptions.columnDefs, field);
            var index2 = $scope.getIndex($scope.baseData, field);
            if (index == -1) {
                var oEle = document.getElementsByClassName(field);
                $(oEle).addClass("active");
//                $scope.gridOptions.columnDefs.splice(index2,0,{
//                    field: field,
//                    displayName: field,
//                    width: width,
//                    class: "active"
//                });
                $scope.gridOptions.columnDefs.push({
                    field: field,
                    displayName: displayName,
                    width: width,
                    key: key
                });
                $scope.gridOptions.columnDefs.sort(function(a,b){
                    if(a.key> b.key) return 1;
                    if(a.key< b.key) return -1;
                    return 0;
                })
            }
        }
        $scope.removeColumn = function (col) {
            var index = $scope.getIndex($scope.gridOptions.columnDefs,col,"active2");
            if( index!=-1 ) {
                var oEle = document.getElementsByClassName($scope.gridOptions.columnDefs[index].name);
                $(oEle).removeClass("active");
                $scope.gridOptions.columnDefs.splice(index,1);
            };
        }
        $scope.getIndex = function(arr,val){
            var index_ = -1;
            $(arr).each(function(i,o){
                if( arr[i].name == val ){
                    index_ = i;
                }
            })
            return index_;
        }
        $scope.$watch(‘gridOptions‘, function (data) {
            if (data.length > 0 && $scope.columnDefs.length == 0) {
                $scope.getFields().forEach(function (f) {
                    $scope.addColumn(f);
                });
            }
        });

        $("h2 a").each(function(i,o){
            $(this).click(function(){
                if(i==0){
                    $scope.gridOptions.columnDefs = iArray2;
                    $scope.$apply();
                }else{
                    $scope.gridOptions.columnDefs = iArray;
                    $scope.$apply();
                }
            })
        })

    });

</script>
</body>
</html>
        

整个资源放在了百度网盘  需要的下载:http://pan.baidu.com/s/1eSFfksi

时间: 2024-10-11 05:22:48

angularJS ng-grid 配置的相关文章

使用angularjs ui grid 动态加载列名

来个开场白吧: 我是做.net开发的,来到新公司后,缺一个前端开发,SO,我就不得不挠着头干活呀......之前也就写写js,jq,刚看到前端架构的时候一脸懵逼...心里就有三个字:什么鬼!什么angularjs,angularjs ui grid,bootstrap,阿西吧.. 木有办法,总不能又跳槽吧.熟悉了一两天业务和代码后,经理说:"开干!". 首先,做的第一个功能就是使用angularjs ui grid 动态加载列.(这里不得不吐槽一点,ui grid的官方文档实例太少了,

Part 15 AngularJS ng init directive

The ng-init directive allows you to evaluate an expression in the current scope. In the following example, the ng-init directive initializes employees variable which is then used in the ng-repeat directive to loop thru each employee. In a real world

Part 6 AngularJS ng repeat directive

ng-repeat is similar to foreach loop in C#. Let us understand this with an example. Here is what we want to do. 1. For each employee we have in the employees array we want a table row. With in each cell of the table row we to display employee Firstna

angularjs路由ui-router配置

var myApp = angular.module("myApp", ['ui.router']); myApp.config(['$stateProvider', '$urlRouterProvider','$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) { $urlRouterProvider.when("", "/one&quo

【转】Flume(NG)架构设计要点及配置实践

Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本.经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡. 架构设计要点 Flume的架构主要有一下几个核心概念: Event:一个数据单元

AngularJS实现单页应用的原理——路由(Route)

AngularJS实现单页应用的原理——路由(Route) 路由:告诉你一个通往某个特定页面的途径 http://127.0.0.1/index.html#/start http://127.0.0.1/index.html#/main #/start <=> start.html #/main <=> main.html SPA应用中的页面切换的原理: (1)使用JS解析当前的页面地址 location.hash( ) (2)查找字典,找到指定的路由地址对应的真正的页面名称 (3

【翻译】ExtJS vs AngularJS

原文:ExtJS vs AngularJS ExtJS和AngularJS是两个行业内率先的富界面开发框架.TechFerry有机会使用Ext JS和Angular JS来开发多个富界面的单页面应用程序.本文讲述的就是使用这两种技术来开发多个应用程序后的开发体验.本文环绕利弊.架构.測试.移动能力.性能.生成和部署等方面对Ext JS和Angular JS进行了超过30个以上的要点进行了比較. 我们将通过使用Ext JS和Angular JS开发一个測试应用程序来了解架构细节,以便进行具体的性能

桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面

折腾angularjs的感悟 几天折腾,总的来说看了很多博客,要么不是最新的技术文档,要么写得不够完整,因为别人是基于他们的理解写的技术博客代码不一定会贴完整,所以一旦你用的是最新的想要看完整的实例就只能去官网查阅文档,现在通过实现下面的两个功能才真正了解什么是前端的MVVM框架. 另外,总结下我理解中的MVVM框架:后台php是MVC框架,一直做法是php处理数据,然后把数据渲染到模板,然后后台返回html页面给浏览器, 现在前端mvvm(model-view-viewmodel)就是:mod

oracle 12c grid db 安装的的checklist

oracle 12c 安装 checklist 关闭 iptables NetworkManager selinux service iptables stop chkconfig iptables off service NetworkManager stop chkconfig NetworkManager off 修改/etc/selinux/config 文件 将SELINUX=enforcing改为SELINUX=disabled 重启机器即可 创建oracle用户 groupadd

AngularJS 视图和路由

在AngularJS之后引用angular-route  路由   ngRoute模块加载声明 AngularJS提供的when和otherwise两个方法来定义应用的路由 otherwise方法会在没有任何路由匹配时被调用,我们用它设置了一个默认跳转到'/'路径的路由 ng-view是一个优先级为 1000的终极指令. AngularJS不会运行同一个元素上的低优先级指令 每次触发$routeChangeSuccess事件,视图都会更新. 如果某个模板同当前的路由相关联:创建一个新的作用域:移