首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AngularJS Ui- DataTables,如何避免多ng重复

AngularJS Ui- DataTables,如何避免多ng重复
EN

Stack Overflow用户
提问于 2015-11-17 03:01:30
回答 1查看 1K关注 0票数 1

问题是,

我用angularJS做了一些人的列表。人是如下所示的JSON对象:

代码语言:javascript
运行
AI代码解释
复制
{ "id":"0" , "name":"My name" , "firstname":"My first Name" , "contacts":[{"id":"0" , "type":"phone" , "value":"0574869345"},{"id":"1" , "type":"email" , "myEmail@mail.com"}] }

请注意,此人可能有几个联系方式(电子邮件、电话等)。

实际上,我能够将人员列表(数组)显示为“简单”表,其中包括:

  1. ng-重复使用"persons“(peopleList中的人)
  2. ng-重复“联系人”(people.contacts中的联系人)

这听起来像是最符合逻辑的简单解决方案。但在其他一些情况下,由于数据不那么复杂,我正在使用“ng网格”,即现在的“ui网格”来显示数据表。

在此之前,我曾经使用过jquery.dataTables,但似乎它不适合使用角,因为它与js直接相关,并且没有对$scope更改进行“更新”.正如您可能得到的那样,用户将能够在事件中“更改”人员列表。因此,网格/表内容必须链接到范围。

下面是我正在尝试实现的当前“只有角”解决方案的一个非常简短/简化的例子:http://jsfiddle.net/k2p3xxhx/

这是ng网格解决方案(不工作!)如果可能的话,我想使用:http://jsfiddle.net/guprs47p/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-17 05:55:21

角度UI网格允许您绑定自定义模板。您可以为您的字段使用单元格模板属性来实现所需的功能。

您可以使用cellTemplate,它只是用于呈现数据的自定义HTML。

代码语言:javascript
运行
AI代码解释
复制
<div ng-repeat='field in COL_FIELD'>
  <div>{{field.id}} - {{field.type}}- {{field.value}}</div>
 </div>

既然您有了模板,就可以使用它的cellTemplate属性将字段分配给您的字段( UI网格中的一个列),因此您的字段对象如下所示,

代码语言:javascript
运行
AI代码解释
复制
  {
  field: "contacts",
  displayName: "Contacts",
  cellTemplate: "<div class='ui-grid-cell-contents'><div ng-repeat='field in COL_FIELD'>{{field.id}} - {{field.type}}- {{field.value}}</div></div>"
}

您可以看到,在COL_FIELD上将对数据进行迭代,该COL_FIELD将具有绑定数据时的实际值。因此,您知道实际值是一个可以使用ng-repeat迭代的数组。

因此,当ui网格呈现时,它将迭代您的数据并显示值。

下面,我使用了与您相同的例子,根据您的需要创建示例。

有关自定义模板的更多信息,您可以在UI Grid的官方网站上找到

希望能帮上忙!

代码语言:javascript
运行
AI代码解释
复制
var app = angular.module("myApp", ['ui.grid']);

function ctrl($scope) {
  $scope.myData = {
    data: "listing",
    columnDefs: [{
      field: "id",
      displayName: "ID"
    }, {
      field: "name",
      displayName: "Name"
    }, {
      field: "firstname",
      displayName: "First Name"
    }, {
      field: "contacts",
      displayName: "Contacts",
      cellTemplate: "<div class='ui-grid-cell-contents'><div ng-repeat='field in COL_FIELD'>{{field.id}} - {{field.type}}- {{field.value}}</div></div>"
    }, ],
    rowHeight: 100
  }
  $scope.listing = [{
    "id": "0",
    "name": "My name",
    "firstname": "My first Name",
    "contacts": [{
      "id": "0",
      "type": "phone",
      "value": "0574869345"
    }, {
      "id": "1",
      "type": "email",
      "value": "myEmail@mail.com"
    }]
  }, {
    "id": "1",
    "name": "My name One",
    "firstname": "My first Name One",
    "contacts": [{
      "id": "2",
      "type": "phone",
      "value": "0574444444"
    }, {
      "id": "3",
      "type": "email",
      "value": "myEmailOne@mail.com"
    }]
  }];
  $scope.count = 0;
  $scope.switch = function() {
    if ($scope.count % 2 == 0) {
      $scope.listing = [{
        "id": "0",
        "name": "My name",
        "firstname": "My first Name",
        "contacts": [{
          "id": "0",
          "type": "phone",
          "value": "0574869345"
        }, {
          "id": "1",
          "type": "email",
          "value": "myEmail@mail.com"
        }]
      }, {
        "id": "1",
        "name": "My name One",
        "firstname": "My first Name One",
        "contacts": [{
          "id": "2",
          "type": "phone",
          "value": "0574444444"
        }, {
          "id": "3",
          "type": "email",
          "value": "myEmailOne@mail.com"
        }]
      }];
    } else {
      $scope.listing = [{
        "id": "2",
        "name": "My name Two",
        "firstname": "My first Name Two",
        "contacts": [{
          "id": "4",
          "type": "phone",
          "value": "0888888888"
        }, {
          "id": "5",
          "type": "email",
          "value": "myEmailTwo@mail.com"
        }]
      }, {
        "id": "3",
        "name": "My name Three",
        "firstname": "My first Name Three",
        "contacts": [{
          "id": "6",
          "type": "phone",
          "value": "022222222"
        }, {
          "id": "7",
          "type": "email",
          "value": "myEmailThree@mail.com"
        }]
      }];
    }
    $scope.count++;
    console.log('switched!');
  };
}
代码语言:javascript
运行
AI代码解释
复制
.uiGridTable: {
  height: 600px;
}
代码语言:javascript
运行
AI代码解释
复制
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://cdn.rawgit.com/angular-ui/bower-ui-grid/master/ui-grid.min.js"></script>
<link href="https://cdn.rawgit.com/angular-ui/bower-ui-grid/master/ui-grid.min.css" rel="stylesheet" />

<div ng-app="myApp" ng-controller="ctrl">
  <button type="button" ng-click="switch();">Switch</button>
  <div ui-grid="myData" class="uiGridTable"></div>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33755264

复制
相关文章
AngularJS ng-model 指令
ng-model 指令用于绑定应用程序数据到 HTML 控制器(input, select, textarea)的值。
陈不成i
2021/07/23
1.1K0
AngularJS ng-model 指令
在前端开发中,表单是用户与网站互动的重要组成部分。为了实现表单数据的双向绑定,AngularJS 提供了 ng-model 指令。本文将详细介绍 ng-model 指令的用法和工作原理,并提供一些实例帮助读者更好地理解和应用该指令。
网络技术联盟站
2023/07/05
1920
如何避免 Cronjob 重复运行
Cronjob使用中有很多问题需要注意,前段时间写了一篇文章《为什么 Cronjob 不执行》,里面谈到了各种会导致cronjob不执行的因素和解决方案,而本文就cronjob重复运行的场景,对技术手段、技术方案、具体代码和相互优劣展开详细讲解。
33178
2022/08/23
1.6K0
AngularJs ng-route路由详解
本篇基于ng-route来讲下angular中的路由,路由功能主要是 $routeProvider服务 与 ng-view 实现。 ng-view的实现原理,是根据路由的切换,动态编译html模板——$compile(html)(scope)。 更多内容参考:Angularjs总结 前提 首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular <script src="../../bower_components/angular/an
用户1154259
2018/01/17
1.9K0
angularJS学习之路(九)---ng-if
ng-if  指令可以根据表示的结果   在DOM中生成或者移除一个元素   而且是完全移除  不是隐藏或者显示
wust小吴
2019/07/08
4680
angularJS学习之路(八)---ng-switch
这个指令   和  ng-switch-when 以及  on="name"一起使用    
wust小吴
2019/07/08
3360
angularJS学习之路(十一)---ng-show和ng-hide
ng-show 和 ng-hide 根据表达式的值来显示或者隐藏HTML元素 ng-show   false   被隐藏 ng-hide true 被隐藏 <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="utf-8"> <title></title> </head> <body> <div ng-show="2 + 2 === 5">2 + 2 isn't 5, don't show</div> <div n
wust小吴
2019/07/08
7940
避免重复内容
重复内容是指有两个或者更多的页面有相同或者基本相同的内容。我们必须避免重复内容以免被搜索引擎惩罚。但是有时候我们需要在页面上显示2个(获这个更多)日志列表,通常我们是通过多个循环(一个标准的循环,一个来自特定的分类的循环)来实现。这样通常是你就能不仅想推荐最新写的日志,同时来自某个特定的分类。
Denis
2023/04/13
6940
angularjs中常用的ng指令介绍【转载】
原文:http://www.cnblogs.com/lvdabao/p/3379659.html
用户3055976
2018/09/12
2K0
AngularJS:如何使用自定义指令来取代ng-repeat
引言 本文主要介绍了另一种即具有与ng-repeat 一样处理大量数据的绑定的功能,又具有超高的性能。 对于处理小数量,ng-repeat是非常有用的,但是如果需要处理非常大的数量集,还是采用自定义的方法更好一些。 也别是数据大多都是静态的或已预存储好的,这个时候应避免使用ng-repeat指令。 ng-repeat中的表达式和 $watch Angular中的表达式都会创建$watch 的Scope 函数。用于监听模型变化,当你的模型部分发生变化时它会通知你。在ng-repeat指令中,如果某行数据有15
葡萄城控件
2018/01/10
2.5K0
【踩坑】angularJS 1.X版本中 ng-bind 指令多空格展示
做项目的时候遇到的问题 1、问题描述   用户在表单某个值输入多个空格,例如:A     B,保存至服务器   在列表查询页面中使用bg-bind的指令单向绑定,结果展示位A B,连续的空格被替换为单个空格 2、定位分析   2.1 从用户输入到最终查询展示经理太多环节,可能转换的地方有:  输入时的事件中,请求服务器前,http传输,服务器接收解析,服务器处理,服务器保存至数据库,数据库查询服务,查询服务返回,界面展示   因此逆向定位问题好些   通过Chrome中network看到服务器返回的数据带有
SmileSmith
2018/04/16
1.1K0
小程序如何避免多次点击,重复触发事件
作为前端开发,我们经常会遇到的场景,比如用户点击获取验证码按钮时,没有反应,大部分用户都会接着点击,这就会造成用户收到多条验证码,这是因为后台api请求比较慢,而客户端体验又做得不到位,导致用户以为没点击到或者是页面假死,在上次请求还没处理完,就再次点击按钮。这对于我们开发来说,这是bug。
honey缘木鱼
2018/09/26
6.3K0
webapi避免http重复请求
route过滤 添加路由过滤,在过滤器中判断sessionid或者cookie session session服务端文件,存储guid或者用户账户(操作简单,增加服务器压力) session管理参考:https://www.cnblogs.com/wxdlut/p/9237577.html cookie cookie浏览器端,浏览器请求附带cookie,cookie设置超时管理连接状态) 路由过滤实现方式 golang gin.Default().Use(func() gin.HandlerFunc{
sofu456
2021/12/06
8980
初次使用AngularJS中的ng-view,路由控制
AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面 第一步:引入必要的js: <script src="js/lib/angular.js"></script> <script src="js/lib/angular-animate.min.js"></script> <script src="js/lib/angular-route.min.js"></script> <script src="app.js"></script> 第二步:准备好一个单页: <body ng-a
Ryan-Miao
2018/03/13
1.6K0
Linux 下如何避免重复性压迫损伤(RSI)
Workrave 是一款预防计算机用户发展为 RSI 或近视的自由开源软件。软件会定期锁屏为一个动画: “Workrave 小姐”,引导用户做各种伸展运动并敦促其休息一下。这个软件经常提醒你暂停休息一下,并限制你每天的限度。程序可以运行在 MS-Windows、Linux 以及类 UNIX 操作系统下。
用户1880875
2021/09/23
4400
面试官:谈一谈如何避免重复下单?
Order 服务调用 Pay 服务,刚好网络超时,然后 Order 服务开始重试机制,于是 Pay 服务对同一支付请求,就接收到了两次,而且因为轮询负载均衡算法,落在了不同业务节点!所以一个分布式系统接口,须保证幂等性。
路人甲Java
2023/08/29
7500
面试官:谈一谈如何避免重复下单?
datatables,表格
官方文档:https://datatables.net/ var dttblTaskOrderOptions={ order: [5, 'desc'], ajax:{ url:"order/orderdelivery/search", type:"POST", data:function(data){ return JSON.stringify($.extend(data,dttblTaskOrderCondition)); }, dataType:"json", contentType:"applicat
windseek
2018/06/14
1.3K1
走进AngularJs(二) ng模板中常用指令的使用方式
  通过使用模板,我们可以把model和controller中的数据组装起来呈现给浏览器,还可以通过数据绑定,实时更新视图,让我们的页面变成动态的。ng的模板真是让我爱不释手。学习ng道路还很漫长,从模板开始入手是个不错方式,因为这部分内容相对简单好理解,而且是视图层的东西,大家都喜欢可以立马看得见的东西嘛。本篇我将搜罗模板中的常用指令一一测试,了解其使用方法,有点像背单词的感觉,会比较枯燥。不过对于初学,这样的枯燥是必须要经历的,开始~
用户3055976
2018/09/12
3K0
angularjs小练习(分别通过ng-repeat和ng-option动态生成select下拉框)
本次做一个简单的关于动态生成select的练习   在实现上有两种方式:     其一、通过ng-repeat来实现     其二、通过ng-option来实现     在页面效果上,两种实现的效果都一样     但是在数据选择的数据从操作上有所不同     ng-repeat选中的是其option对应的value值     ng-option选择的是其对应绑定数据的一个object对象   在实际应用中建议采用ng-option实现   代码实例: <!DOCTYPE html> <html xmlns=
小小许
2018/09/20
1.5K0
避免 SwiftUI 视图的重复计算
随着近年来有关 SwiftUI 的文章与书籍越来越多,开发者应该都已经清楚地掌握了 —— “视图是状态的函数” 这一 SwiftUI 的基本概念。每个视图都有与其对应的状态,当状态变化时,SwiftUI 都将重新计算与其对应视图的 body 值。
东坡肘子
2022/08/03
9.3K0
避免 SwiftUI 视图的重复计算

相似问题

ng-在angularJs中重复避免重复值

21

AngularJs : ng-if重复,重复比在ng-if中重复的多。

12

Angularjs: ui-选择ng-单击ui-选择-选择

24

AngularJS: ui-选择重复错误

13

ng-重复和ui-如果

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文