我当前正在编写一个小函数,以从输入字段中获取$ scope值,然后将其添加到包含受邀用户的新数组中。
为了防止重复输入数组,我尝试使用JavaScript的filter方法。
我的问题是,当我查看输出到控制台的内容时,过滤器功能内的console.log总是打印相同的Email值,它似乎没有更新并考虑新的输入。例如一个用户添加了2个用户,则将添加第一个用户,而InvitationsArr仅包含第一个电子邮件。
var invitesArr = $scope.invites;
console.log(invitesArr)
console.log($scope.searchContacts)
if ($scope.invites.length >= 0) {
invitesArr.filter(function(invitesArr) {
console.log(invitesArr.Email)
return invitesArr.Email === $scope.searchContacts;
});
if (invitesArr == false) {
courseAccountService.inviteGuestToCourse($scope.courseId,$scope.searchContacts).
then(function(invitation) {
$scope.invites.push(invitation);
});
}
}
最佳答案
试试下面的代码:
var invitesArr = $scope.invites;
console.log(invitesArr)
console.log($scope.searchContacts)
if ($scope.invites.length >= 0) {
//use arrow operator instead of function.
var duplicateEmails = invitesArr.filter((item) => {
console.log(invitesArr.Email)
//assuming datatype of item.Email and $scope.searchContacts are same else use == for comparision
return item.Email === $scope.searchContacts;
});
//Check for length and then push to your invites
if (duplicateEmails.length==0) {
courseAccountService.inviteGuestToCourse($scope.courseId,$scope.searchContacts).
then(function(invitation) {
$scope.invites.push(invitation);
});
}
}
希望能帮助到你!!
关于javascript - Angular JavaScript过滤器功能,使用$ scope输入进行更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43861481/