Невозможно отобразить новый пустой массив после метода push (), использующего для цикла - AngularJS - PullRequest
0 голосов
/ 13 ноября 2018
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>User Management- M&M</title>
    <link rel="icon" href="images/logo.jpg">
    <link href="css/bootstrap.min.css" rel="stylesheet" />
    <script type="text/javascript" src="js/angular.min.js"></script>
    <script type="text/javascript" src="js/userApp.js"></script>

    <!--<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">-->
    <!--<link href="CSS/Home.css" rel="stylesheet" />-->
</head>
<body ng-app="myApp" ng-controller="myController">
    <nav class="navbar navbar-expand-lg navbar-light" id="mainNav">
        <div class="container">
            <a class="navbar-brand js-scroll-trigger" href="index.html">
                <img src="images/logo.jpg" alt="M&M" width="110" />
            </a>
            <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarResponsive">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item">
                        <a class="nav-link js-scroll-trigger" href="LoginPage.html">Login</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link active js-scroll-trigger" href="User_Mgmt.html">User Management</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll-trigger" href="CompanyManagement.html">Company Management</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll-trigger" href="ProductPage.html">Product Management</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link js-scroll-trigger" href="ShoppingCart_Group5_Team1.html">Shopping Cart</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    <header class="subhead">
        <div class="container">
            <div class="row">
                <div class="col-xs-6 col-md-6">
                    <input class="form-control" id="ex3" type="text" placeholder="Search Users" ng-model="searchUsers">
                </div>
                <div class="col-xs-6 col-md-6">
                    <button type="button" class="btn btn-info btn-lg float-right" data-toggle="modal" data-target="#myModal">Add New</button>
                </div>
                <div class="clearfix"></div>
            </div>

            <hr>


            <table class="table table-striped table-hover">
                <thead>
                    <tr class="table100-head">
                        <th>Email</th>
                        <th>First Name</th>
                        <th>Last Name</th>
                        <th>Contact</th>
                        <th>Role</th>
                        <th>Company</th>
                        <th>Edit</th>
                        <th>Delete</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="user in selectedUsers | filter: searchUsers track by $index">
                        <td>{{user.email}}</td>
                        <td>{{user.firstName}}</td>
                        <td>{{user.lastName}}</td>
                        <td>{{user.contact}}</td>
                        <td>{{user.role}}</td>
                        <td>{{user.company}}</td>
                        <td>
                            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#myModalEdit" ng-click="selectUser(user)">Edit</button>
                        </td>
                        <td>
                            <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#myModalDelete" ng-click="selectUser(user)">Delete</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
        </header>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
</body>
</html>

Я пытаюсь создать веб-страницу, на которой при входе пользователя, в зависимости от компании, в которой выполняется вход, мне нужно отобразить список выбора пользователей из массива «Пользователи».

Проблемапосле метода push () consolelog и debug отображают данные в списке selectedUsers, но не в браузере.

Например, когда пользователь, принадлежащий компании Apple, входит в систему, то здесь онВ таблице должны отображаться только пользователи, принадлежащие компании APPLE.

Для справки: "currentUser" - это массив, взятый со страницы входа в систему с использованием localStorage.getItem ().

В массив "users" входитсписок всех пользователей из разных компаний.

"selectedUsers" пустой массив, в котором должны отображаться только пользователи, принадлежащие к одной компании.Это делается с помощью цикла for для массива пользователей с массивом currentUser.После этого я помещаю отфильтрованные данные пользователей в массив selectedUsers и отображаю их в виде таблицы.

Я слышал о функции async.Должен ли я использовать это?Я понятия не имею, где и как это реализовать.

Ищу руководство.Заранее спасибо.

PS: Да, я использовал пользователя ng-repeat в selectedUsers на странице HTML для отображения selectedUsers.

//Info-

    //currentUser- user array acquired from the login user page.

    // Users- List of all static users in the array.

    // selectedUsers- List of users displayed and filtered from the users array based on currentUser.company


if (localStorage.getItem("currentUser") !== null) {

        var currentUser = JSON.parse(localStorage.getItem("currentUser"));
        console.log("Received", currentUser);
    }
    else {
        console.log("Not received");
    }
    
if (localStorage.getItem("users") === null) {
        $scope.users = [
            { email: "John@yahoo.com", password: "John123", firstName: "John", lastName: "Doe", contact: "281-283-2480", role: "Supplier-Admin", company: "Apple" },
            { email: "Rick@yahoo.com", password: "Rick123", firstName: "Rick", lastName: "Fraiser", contact: "987-283-2489", role: "Supplier-User", company: "Apple" },
            { email: "Sam@yahoo.com", password: "Sam123", firstName: "Sam", lastName: "Tarly", contact: "456-786-2480", role: "BuyerAdmin", company: "Samsung" }
        ];
        localStorage.setItem("users", JSON.stringify($scope.users));
    } else {
        $scope.users = JSON.parse(localStorage.getItem("users"));
    }

//filter users based on currentUser's role and push into selectedUsers
    for (var i = 0; i<$scope.users.length; i++) {
        $scope.selectedUsers = [{}];
        if ($scope.users[i].company === currentUser[0].company) {
            $scope.selectedUsers.push($scope.users[i]);
        }
        console.log("filteredUsers", $scope.selectedUsers);
        localStorage.setItem("selectedUsers", JSON.stringify($scope.selectedUsers));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...