angularJs中datatable实现代码

本文介绍了angularJs中datatable实现,有需要的小伙伴可以参考下

html引用derective:

代码如下:

<table datatable dtOptions="dtOptionsExample2" class="table table-striped m-b-none"></table>

controller设置:

$scope.dtOptions = {
"bProcessing": true,
"bServerSide": true,
iDisplayLength: 5,
sAjaxSource: 'http://10.188.192.200:8080/employee/page?deptId='+ data,
sAjaxDataProp: 'aaData',
"sDom": "<'row'<'col-sm-6'l><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>",
sPaginationType: "full_numbers",
"aoColumns":
[
{ "mData": "employeeId" },
{ "mData": "employeeName",
"sClass": "center",
"mRender": function(data,type,full) {
return '<a class="emplyeeInfoLink" href="javascript:;" rel="external nofollow" >阿司法所</a>';
}
},
{ "mData": "employeeEmail" },
{ "mData": "employeeMobilePhoneMaster" }
],
/*"aoColumnDefs":[
{
"aTargets":[4],
"mData": null
}
],*/
"fnServerData": function( sUrl, aoData, fnCallback, oSettings ) {
oSettings.jqXHR = $.ajax({
"url": sUrl,
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
"data": aoData,
"type": 'get',
"success": fnCallback,
"cache": false
});
}
}

angular.datatable.js:

angular.module('datatablesDirectives', []).directive('datatable', function ($http) {
 return {
 // I restricted it to A only. I initially wanted to do something like
 // <datatable> <thead> ... </thead> </datatable>
 // But thead elements are only valid inside table, and <datatable> is not a table.
 // So.. no choice to use <table datatable>
 restrict: 'A', 

 link: function ($scope, $elem, attrs) {
  var options = {}; 

  // Start with the defaults. Change this to your defaults.
  options = {} 

  // If dtOptions is defined in the controller, extend our default option.
  if (typeof $scope.dtOptions !== 'undefined') { 

   angular.extend(options, $scope.dtOptions);
  } 

  // If dtoptions is not declared, check the other options
  if (attrs['dtoptions'] === undefined) { 

   // Get the attributes, put it in an options
   // We need to do a switch/case because attributes does not retain case
   // and datatables options are case sensitive. Damn. It's okay! We need to detect
   // the callbacks anyway and call it as functions, so it works out!
   // I put what I needed, most of my settings are not dynamics except those 2.
   for (property in attrs) {
    switch (property) {
     // This is the ajax source
     case 'sajaxsource':
      options['sAjaxSource'] = attrs[property];
     break;
     // This is the ajax data prop. For example, your result might be
     // {code: 200, data: [ .. ]} -> in the case, sAjaxDataProp is data
     case 'sajaxdataprop':
      options['sAjaxDataProp'] = attrs[property];
     break;
    }
   }
  } else {
   // If dtoptions is declare, extend the current options with it. 

   angular.extend(options, $scope.dtOptions);
  }  

  // Just some basic validation.
  if (typeof options['sAjaxSource'] === 'undefined') { 

   throw "Ajax Source not defined! Use sajaxsource='/api/v1/blabla'";
  } 

  // for Angular http inceptors
  if (typeof options['fnServerData'] === 'undefined') {
   options['fnServerData'] = function (sSource, aoData, resultCb) {
    $http.get(sSource, aoData).then(function (result) {
     resultCb(result.data);
    });
   };
  } 

  // Get the column options, put it in a aocolumn object.
  // Obviously, mdata is the only one required.
  // I personally just needed those 3, if you need other more feel free to add it.
  // mData also accepts a function; I'm sure there's a more elegant way but for now
  // it detects if it's a function, and if it is, do it.
  options.aoColumns = []; 

  // Get the thead rows.
  $elem.find('thead th').each(function() {
   var colattr = angular.element(this).data();
   //console.log(colattr);
   //console.log('demodeo');
   // Detects if it's a function. Must exist in scope.
   if (colattr.mdata.indexOf("()") > 1) { 

    // Simple one-liner that removes the ending ()
    var fn = $scope[colattr.mdata.substring(0, colattr.mdata.length - 2)]; 

    // Throw an error if it's not a function.
    if (typeof fn === 'function') {
     options.aoColumns.push({
     mData: fn,
     sClass: colattr.sclass,
     bVisible: colattr.bvisible,
     mRender: colattr.mrender
    });  

    } else { 

     throw "mData function does not exist in $scope."; 

    }
   } else {
    //console.log('<1?');
    options.aoColumns.push({
    mData: colattr.mdata,
    sClass: colattr.sclass,
    bVisible: colattr.bvisible,
    mRender: colattr.mrender
   }); 

   }
  }); 

  // Load the datatable!
  $elem.dataTable(options);
  //console.log(options); 

 }
 }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • js操作table元素实现表格行列新增、删除技巧总结

    本文实例讲述了js操作table元素实现表格行列新增.删除的方法.分享给大家供大家参考,具体如下: /************ TableTool.js ****************************************************************************************************************** **********************************************************

  • JS实现点击Radio动态更新table数据

    tbody定义一个标签 当上面变化的,在js里面做拼接就行了,拼接结束 tbody.html(XXX) <script type="text/javascript"> $(function(){ var quotas = { 1:{name:"工商银行",oneTime:1000}, 2:{name:"农业银行",oneTime:800}, 3:{name:"中国银行",oneTime:2000}, 4:{name

  • 详解PHP中的 input属性(隐藏 只读 限制)

    隐藏 <input type="hidden"> 只读 <input type="text" readonly> 失效 <input type="text" disabled> 限制 <input type="text" maxlength="1"> ENTER键让光标移到下一个输入框 <input onkeydown="if(event.ke

  • jquery.tableSort.js表格排序插件使用方法详解

    本文实例为大家分享了jquery.tableSort.js表格排序的具体代码,供大家参考,具体内容如下 1.一定要引jQuery包,所有jq插件都是基于jQuery包的 2.如果想指定哪一栏不排序这样写 $("#mytable").tablesorter({headers:{5:{sorter:false}}}); 第5列的sorter为false就OK了 参考:http://www.jb51.net/article/105217.htm <!DOCTYPE html> &

  • JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题

    正文 前言:一年前,博主分享过一篇关于bootstrapTable组件冻结列的解决方案  JS组件系列--Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案 ,通过该篇,确实可以实现bootstrapTable的冻结列效果,并且可以兼容ie浏览器.这一年的时间,不断有园友以及群里面的朋友问过我关于固定高度之后,冻结列页面效果不能对齐的问题,奈何博主太忙,一直没有抽空将这个问题优化.最近项目里面也不断有人提过这个bug,这下子不能再推了,必须要直面"惨淡的bug",于

  • angularJs中datatable实现代码

    本文介绍了angularJs中datatable实现,有需要的小伙伴可以参考下 html引用derective: 复制代码 代码如下: <table datatable dtOptions="dtOptionsExample2" class="table table-striped m-b-none"></table> controller设置: $scope.dtOptions = { "bProcessing": tr

  • AngularJS中的路由使用及实现代码

    前  言 本章节将为大家介绍 AngularJS 路由.AngularJS 路由允许我们通过不同的 URL 访问不同的内容.通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA). 1.1 Angular JS路由基础知识讲解 在AngularJS中使用路由: 1. 导入路由文件:angular-route.js 2. 在主模块中注入"ngRoute". angular.module("app",[

  • AngularJS中的Promise详细介绍及实例代码

    Angular中的Promise 在用jQuery的时候就知道 promise 是 Js异步编程模式的一种模式,但是不是很明白他跟JQuery的deferred对象有什么区别.随着公司项目的进行,要跟后台接数据了,所以决定搞定它. Promise Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件. 我们知道,在编写JavaScript异步代码时,callback是最最简单的机制,可是用这种机制的话必须牺牲控制流.异常处理和函数语义化为代价,甚至会

  • 使用AngularJS中的SCE来防止XSS攻击的方法

    这篇文章展示了有关XSS(跨站脚本)的不同方案以及怎样使用AngularJS中SCE($sceProvider),sanitize service这些特性来正确处理XSS.如果我遗漏了什么重要的地方请直接评论/建议.同时,错别字请见谅. 以下几点内容将是我接下来要讲述的重点: 全部转码HTML 安全插入HTML的同时忽略类似"script"这样的标签.如果不加以注意,这将一样存在风险同时也会丑化页面,尤其是在有"img"标签的时候. 依赖并插入纯HTML:这也有风险

  • AngularJS 教程及实例代码

    angularjs 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. AngularJS 是一个 JavaScript 框架 AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中:

  • 详解AngularJs中$sce与$sceDelegate上下文转义服务

    一.严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式.由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子.我们称这些上下文转义为特权或者SCE. 二.$sce $sce 服务是AngularJs提供的一种严格上下文转义服务. 下面代码是简化了的ngBindHtml实现(当然,这不是完整版ngBindHtml源码): var ngBindHtmlDirective = ['$sce', funct

  • AngularJS中使用three.js的实例详解

    AngularJS中使用three.js的实例详解 一.轨迹球的引入问题 一开始我是用下面的方式引如轨迹球,但是会报Trackballcontrols is undefined的错. import * as THREE from 'three'; import * as Trackballcontrols from 'three'; 但其实我是能够在node_module下的threejs的包中找到Trackballcontrols的文件的,我一开始以为是引用的路径没对然后修改路径到对应包下Tr

  • 详解AngularJS中自定义过滤器

    过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果.主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等.ng内置了一些过滤器,它们是:currency(货币).date(日期).filter(子串匹配).json(格式化json对象).limitTo(限制个数).lowercase(小写).uppercase(大写).number(数字).orderBy(排序).总共九种.除此之外还可以自定义过滤器,这个就强大了,可以满足任何

  • AngularJS中$http的交互问题

    这篇文章,主要是通过我们熟悉的jquery中ajax和jsonp的类型方式,总结一下$http的使用. $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 1. angular中的ajax 写法一: $http({ method: 'GET', //可以改成POST url: '/someUrl' }).then(function successCallback(response) { // 请求成功执行代码 }, function errorCallback(re

  • 详解AngularJS中的filter过滤器用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这篇简单说一下angularjs的filter功能,angularjs的filter功能可分为二种,一种是内置的过滤器,一种是自定义的. 一,内置的过滤器 1,uppercase,lowercase大小转换 {{ "lower cap string" | uppercase }} //结果:

随机推荐