我有一个名为self.Employees的KO数组,它有一个显示在屏幕上的用户名列表。用户可以在系统中输入新的用户名,如果名称已经在数组中,我想抛出一个错误。如果文本框为空,我可以抛出一个错误,但是我似乎不能正确地进行搜索。下面是我尝试过的代码。
var employeeList = [
new Employee(1, "Jack Johnson"),
new Employee(2, "Alice Smith"),
new Employee(3, "Clark Kent"),
new Employee(4, "Bruce Banner"),
new Employee(5, "Alan Moore")
];
自我.雇员= ko.可观察数组(雇员列表)//要求!
var match = ko.utils.arrayFirst(self.Employees, function(item)
{
return item.employeeName == employee.Name;
});
if(match === employee.Name) {
self.error("Duplicate entry.");
return;
}
// Check if a field is blank before adding to array THIS WORKS
if(employee.Name == "") {
self.error("A new employee name is required.");
return;
}
else {
self.error("");
}
2条答案
按热度按时间k5hmc34c1#
我认为您的代码的问题在于
match
被设置为employee对象,因此不能像下面这样进行比较:相反,您可以尝试:
如果您想做更多的重构,我建议将
newEmployeeValid
实现为pureComputed
属性。第一个
jfgube3f2#
您可以尝试使用“some”函数来检查它是否存在于对象数组中。它可能也会更干净。
如果name作为任何雇员的姓名出现在对象数组中,则会出现这种情况