我当前正在编写一个小函数,以从输入字段中获取$ 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/

10-12 12:32
查看更多