VaiShankar Ответов: 0

Невозможно отобразить новый пустой массив после push-метода() с использованием for loop - angularjs


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

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

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

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

массив "пользователи" включает в себя список всех пользователей из различных компаний.

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

Консоли.журнал (""контролируемые пользователи"") выводит массив данных, но не отображаются в таблице
Я слышал о функции, называемой асинхронной. Должен ли я использовать это? Я понятия не имею, где и как это осуществить.

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

PS: Да, я использовал ng-repeat user в 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));
    }


Что я уже пробовал:

Я пытался протолкнуть данные массива пользователей в данные selectedUsers, но это просто не работает. Значения поступают в консоль.журнал, но не в таблице.

Bohdan Stupak

Вы пробовали $scope.$apply (), как в этом вопросе so? https://stackoverflow.com/questions/25557962/angularjs-ng-repeat-doesnt-update-when-the-model-changes

0 Ответов