Следующие изменения сделаны для controller.js
файла
Укажите id
для каждого пользовательского объекта, чтобы их можно было эффективно отслеживать без проверки ссылки на объект.
function parseData(input) {
return input.reduce(function (o, i) {
o.push(Object.assign({"id":Date.now()},i));
return o;
},[]);
}
var initialData = [
{ email: "John@yahoo.com", firstName: "John", lastName: "Doe", contact: "281-283-2480", role: "Supplier-Admin", company: "Apple" },
{ email: "Rick@yahoo.com", firstName: "Rick", lastName: "Fraiser", contact: "987-283-2489", role: "Supplier-User", company: "Apple" },
{ email: "Sam@yahoo.com", firstName: "Sam", lastName: "Tarly", contact: "456-786-2480", role: "BuyerAdmin", company: "Samsung" }
];
$scope.users = parseData(initialData);
При выборе пользователя создайте новый объект вместо установки ссылки на существующий
$scope.clickedUser = Object.assign({},user);
При редактировании пользователь выполняет итерацию по объекту users
и обновляет отредактированного пользователя вместо установки ссылки
$scope.editUser = function () {
$scope.users = $scope.users.reduce(function (o,user) {
if(user.id === $scope.clickedUser.id){
user = Object.assign(user,$scope.clickedUser);
}
o.push(user);
return o;
},[]);
$scope.clickedUser = {};
console.log("Users detail => ",$scope.users);
localStorage.setItem("users", JSON.stringify($scope.users));
$scope.info = "User Edited Successfully!";
};
Удалить метод пользователя
$scope.deleteUser = function () {
$scope.users = $scope.users.reduce(function (o,user) {
if(user.id !== $scope.clickedUser.id){
o.push(user);
}
return o;
},[]);
$scope.clickedUser = {};
console.log("Users detail => ",$scope.users);
localStorage.setItem("users", JSON.stringify($scope.users));
$scope.info = "User Deleted Successfully!";
};
Полный код для controller.js
файла
var myApp = angular.module("myApp", []);
myApp.controller("myController", function ($scope) {
console.log("in controller...");
$scope.newUser = {};
$scope.clickedUser = {};
$scope.info = "";
function parseData(input) {
return input.reduce(function (o, i) {
o.push(Object.assign({"id":Date.now()},i));
return o;
},[]);
}
if (localStorage.getItem("users") === null) {
var initialData = [
{ email: "John@yahoo.com", firstName: "John", lastName: "Doe", contact: "281-283-2480", role: "Supplier-Admin", company: "Apple" },
{ email: "Rick@yahoo.com", firstName: "Rick", lastName: "Fraiser", contact: "987-283-2489", role: "Supplier-User", company: "Apple" },
{ email: "Sam@yahoo.com", firstName: "Sam", lastName: "Tarly", contact: "456-786-2480", role: "BuyerAdmin", company: "Samsung" }
];
$scope.users = parseData(initialData);
localStorage.setItem("users", JSON.stringify($scope.users));
} else {
$scope.users = JSON.parse(localStorage.getItem("users"));
}
$scope.saveUser = function () {
console.log("Saving...");
$scope.users.push(Object.assign({"id":Date.now()},$scope.newUser));
$scope.info = "New User Added Successfully!";
$scope.newUser = {};
localStorage.setItem("users", JSON.stringify($scope.users));
};
$scope.selectUser = function (user) {
$scope.clickedUser = Object.assign({},user);
};
$scope.editUser = function () {
$scope.users = $scope.users.reduce(function (o,user) {
if(user.id === $scope.clickedUser.id){
user = Object.assign(user,$scope.clickedUser);
}
o.push(user);
return o;
},[]);
$scope.clickedUser = {};
console.log("Users detail => ",$scope.users);
localStorage.setItem("users", JSON.stringify($scope.users));
$scope.info = "User Edited Successfully!";
};
$scope.deleteUser = function () {
$scope.users = $scope.users.reduce(function (o,user) {
if(user.id !== $scope.clickedUser.id){
o.push(user);
}
return o;
},[]);
$scope.clickedUser = {};
console.log("Users detail => ",$scope.users);
localStorage.setItem("users", JSON.stringify($scope.users));
$scope.info = "User Deleted Successfully!";
};
$scope.clearInfo = function () {
$scope.info = "";
};
});