- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在 SO 中看到很少有问题讨论在 ng-repeat 中不允许重复。我的问题有点不同。就我而言,我很困惑,因为我即使数组中有重复的对象也没有收到错误
这是我的 HTML 代码
<table>
<tr ng-repeat="item in items">
<td> {{ item.email}}</td>
</tr>
</table>
下面是填充数组的代码
app.controller('MainCtrl', function($scope) {
$scope.items=[];
$scope.items.push({
"id":"1",
"email":"a@b.com"});
$scope.items.push({
"id":"1",
"email":"a@b.com"});
$scope.items.push({
"id":"2",
"email":"x@y.com"});
$scope.items.push({
"id":"2",
"email":"x@y.com"});
});
根据我的理解我应该得到错误并且数组中有重复的对象
然而它得到了完美的呈现。这是plunker链接
显然我缺少一些基本的东西。有人可以指出我理解上的差距吗?
编辑
这是我在我的应用程序中遇到的情况(出于明显的原因,仅更改了电子邮件 ID)
ExampleApp.filter("extractEmail", function (){
return function(items){
//console.log("test" + input[0].highlight.file[0]);
var filtered = [];
console.log(" items == " + items);
angular.forEach(items, function(item){
if (item){
var obj = item.highlight.file[0].toString().match(/([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/);
if (obj) {
//console.log(obj[0]);
filtered.push(obj[0]);
}
}
});
console.log(filtered);
return filtered;
}
});
我的 console.log 打印 [“a@gmail.com”、“a@gmail.com”、“b@gmail.com”、“b@gmail.com”]
我得到的错误
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: x in clusterState| extractEmail, Duplicate key: string:a@b.com, Duplicate value: “a@b.com"
我用类似的代码更新了 plunker。无法重现
第二次编辑
问题出在我使用的版本上:Angular JS 1.0.x 支持重复无法重现 http://plnkr.co/edit/qrOez7aZ7X1jsOrmkfiP?p=preview
使用更高版本能够重现
最佳答案
javascript 中的对象是通过引用进行比较,而不是通过值进行比较。
一个对象的内容是否与另一个对象完全相同并不重要,如果引用不指向同一个对象,它们就是不同的。
例如:
// In this case "var a" and "var b" points to different objects.
var a = {};
var b = {};
a == b; // false
// Here, they points to the same one
var a = {};
var b = a;
a == b; // true
如果您需要每个条目都不同,您必须自己检查每个条目。
Angular ngRepeat 有一个语法变体,它使用 track by
让您决定哪个条目是不同的(或重复的)。
<div ng-repeat="entry for entries track by entry.id">{{entry.email}}</div>
关于javascript - AngularJS Ng-重复和重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277888/
是否有在非 AngularJS 页面内初始化 AngularJS 应用程序的最佳实践方法?我正在向现有网页添加新功能,需要传入一个参数。具体来说,有一组选项卡,一个新选项卡将启动一个 Angular
找不到这两者之间的区别。 保留其中任何一个来引导我的 Angular 应用程序是否有意义? angular.bootstrap(document,['myApp']); 或者 angularAMD.b
我试图理解 Packpub 的书附带的示例 AngularJS 应用程序。 app.js文件在 client/src/app 下定义文件夹,它的模块定义看起来像 angular.module('app
Angularjs 具有用于表单验证和显示错误消息的强大基础设施。但是,我处于必须在特定场景中向用户显示警告消息的情况。这是我的简单表格的图表 该表单在两个字段上都应用了必需和模式验证。除了此验证之外
我在重试功能正常工作时遇到了一些麻烦,希望能获得一些帮助。我有一个要调用的$ resource,直到出现成功情况或超过最大重试次数为止。 我似乎遇到的问题是,在我的重试函数中,我正在调用另一个prom
我目前正在开发一个 AngularJS 应用程序,我遇到了以下障碍。 当用户提交时,我们有一个 login 页面,我们调用一个 web api 并对用户进行身份验证,我们目前正在使用 claims 身
当范围更新时,指令的属性不会改变,它们仍然保持初始值。我在这里缺少什么? HTML works great works: {{foo}} Javascript (基于首页上的 A
我正在使用 Zurb 的 Foundation 框架修改应用程序以实现响应性和 AngularJS。存在数据显示在带有 ... 的表中的错误有 是根据 Foundation 的响应规则隐藏/显示的。不
在过去的三天里,我一直在搜寻互联网,试图弄清楚当angular注意到div的宽度发生变化时如何使指令运行。 我不断看到相同的示例,说明如何实现此目标,但是它们对我不起作用,我也不知道为什么。 我回到一
我正在使用以下代码尝试汇总 在 Angular ,这在整个作品中,但是小于 0.5 的数字四舍五入为 0。我想 向上取整 每个数字到下一个整数。例如 0.02 应四舍五入为 1 {{((data.Vi
我目前正在尝试以一种能够适当扩展到企业级别的方式来组织我的 Angular 应用程序。但是我发现似乎过度依赖框架内的命名约定,并且试图避免命名冲突是一个真正的问题。 例如,当定义任何 constant
我正在阅读 AngularJS 基础知识,并且喜欢在我的页面中使用它的绑定(bind)功能。所以我可以定义可以在 View 中显示的数据,可以对数据进行更改,以便在 View 中更改它而无需担心。 在
在父 Controller 范围内,我定义了 selectedItem设置为“x”。然后在子范围内,我定义了selectedItem使用 ngModel:
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
如果2个条件为真,我试图将一个特定的类应用于li元素,因此我编写了以下代码,但似乎无法正常工作 ng-class="{current:isActive('/'), loginStatus: false
请看看朋克。 http://plnkr.co/edit/DuTFYbLVbPkCIvRznYjG?p=preview ng-pattern regEx不适用于输入文本字段。 仅在需要验证的情况下才能正
我正在为iOS + Android构建AngularJS(1.x)和Ionic/Cordova移动应用程序。我想在登录页面上添加/创建“深层链接”,以便在我向新用户发送“确认您的电子邮件”电子邮件时,
angularjs 中服务(或工厂)的生命周期是什么,何时重新初始化? 最佳答案 当 Angular 启动时,它会将服务的构造函数附加到关联的模块上。这种情况发生一次。 angular .modu
我对 Angular 很陌生,所以希望我知道的足够多,可以问什么似乎是合理的设计问题。 我正在通过 Angular 绘制一些数据,并且正在使用 $resource。在将 Angular 引入项目之前,
我需要在我的 angular-breeze 应用程序中使用国家/地区下拉菜单,我尝试了以下操作: https://github.com/banafederico/angularjs-country-s
我是一名优秀的程序员,十分优秀!