Невозможно отобразить новый пустой массив после 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