gpt4 book ai didi

javascript - 验证 ng-repeat Angular 中的项目

转载 作者:行者123 更新时间:2023-11-29 23:45:45 24 4
gpt4 key购买 nike

我有一个数据项,我正在使用 ng-repeat 在 AngularJS (v1.x) 的表格中编辑,其中数据由名称和日期从/到日期组成。

var myPersons = [{
name: "John Smith",
coverFromDate: "05/13/2016",
coverToDate: "05/15/2016"
},
{
name: "Fanny Schmelter",
coverFromDate: "05/16/2016",
coverToDate: "05/18/2016"
}
];

我添加了对两个日期更改的验证,以确保日期早于使用在行中很好地显示错误消息的指令的日期。

我想在列表中添加一些验证以确保在整个列表中输入的日期没有重叠。如果有,我希望出现一条错误消息(最好在无效项目旁边)并将表单标记为无效(以防止提交)。

我对执行此操作的最佳方法有点困惑。如果有人有解决方案,那么我很想知道 - 可以应用相同的逻辑来确保唯一的人名,所以不要担心使用日期 - 这是我感兴趣的机制 - 如果这是一个独立于 Controller ,或者它应该是 Controller 方法等。它可以在日期从/到字段延迟后触发吗?

我一直在寻找答案,但 2 天来几乎什么都没找到。

我为此 here 创建了一个 Plnkr .

更新

我偶然发现了这个问题 here .这似乎让 Controller 知道 View 。

我修改了上面的 plnkr 以通过在 Controller 中添加验证来获得解决方案 here .这是 Angular 世界中做事的最佳方式吗?在我看来, Controller 变得更加了解 View - 即知道字段的名称并了解表单验证方法。

最佳答案

 don't fret about using dates

不确定你在这里的意思,因为你的其余描述似乎暗示你正在尝试解决与日期相关的问题。

要识别是否有像coverToDate这样的重复键,你可以在ES6中做这样的事情

let myPersons = [{
name: "John Smith",
coverFromDate: "05/13/2016",
coverToDate: "05/15/2016"
},
{
name: "Fanny Schmelter",
coverFromDate: "05/16/2016",
coverToDate: "05/18/2016"
},
{
name: "Plankton",
coverFromDate: "05/16/2016",
coverToDate: "05/18/2016"
}
];

let arr = [];

myPersons.forEach(function(item) {
let a = item['coverToDate'];
let b = item['name'];
let set = new Set(arr);

if (!set.has(a)){
arr.push(a);
console.log(`added ${b} with ${a}`);
}
else{
console.log(`ERROR: ${b} has duplicate ${a}`);
}
});

您可以将验证放入服务/工厂包装器中,以使其可重用。您应该能够使用 lodash 的方法(例如 ES5 中的 .every、.forEach、.partial、.has)实现其等价物。

我建议使用 ng-messages 进行任何额外的验证检查

关于javascript - 验证 ng-repeat Angular 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com