Обновление документа в JSON Collection с использованием AngularJS

0

Я хотел бы обновить документ в коллекции JSON, используя AngularJS

Моя коллекция JSON:

$Scope.employee = {
        "staff" : 
        [
            {
              "id" : 1,
              "Name" : "John",
              "email" : "[email protected]"
            },
            {
              "id" : 2,
              "Name" : "Watson",
              "email" : "[email protected]"
            },
            {
              "id" : 3,
              "Name" : "jack",
              "email" : "[email protected]"
            },
            {
              "id" : 4,
              "Name" : "Jim",
              "email" : "[email protected]"
            },
            {
              "id" : 5,
              "Name" : "Rose",
              "email" : "[email protected]"
            }
        ]            
  };

Теперь мне нужно обновить документ, где Id = 2 -

$Scope.updateEmployee = {
    "id" : 2,
    "Name": "Emma",
    "email": "[email protected]"
};

Пожалуйста, помогите мне, как заменить конкретный документ, и я хотел бы обновить email id = 5 на [email protected]

Теги:

3 ответа

0
Лучший ответ

Вы можете сделать это,

$scope.update = function(){
 $scope.employee.staff.forEach(function (item) {
    if (item.id == 2 ) {
        item.Name = "Emma";
        item.email ="[email protected]";
    };        
});     
}

DEMO

0

Вы можете сделать это, используя underscore.js

Plunker

В принципе, вы должны воздерживаться от прохождения всего списка, поскольку это может привести к некоторым проблемам, связанным с производительностью. Что сделает underscore.js, так это то, что он вернется, как только он найдет приемлемый элемент и не пройдет весь список.

Прочтите официальную документацию здесь

find_.find (список, предикат, [контекст]) Псевдоним: обнаружение
Просматривает каждое значение в списке, возвращая первый, который передает тест истины (предикат), или не определено, если значение не проходит тест. Функция возвращает, как только находит приемлемый элемент и не пересекает весь список.

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
    $scope.employee = {
        "staff": [{
            "id": 1,
            "Name": "John",
            "email": "[email protected]"
        }, {
            "id": 2,
            "Name": "Watson",
            "email": "[email protected]"
        }, {
            "id": 3,
            "Name": "jack",
            "email": "[email protected]"
        }, {
            "id": 4,
            "Name": "Jim",
            "email": "[email protected]"
        }, {
            "id": 5,
            "Name": "Rose",
            "email": "[email protected]"
        }]
    };
    $scope.update = function() {
        var index = _.findIndex($scope.employee.staff, function(o) {
            return o.id == 2;
        })
        $scope.employee.staff[index].Name = "Emma";
        $scope.employee.staff[index].email = "[email protected]";
    }
});
<!DOCTYPE html>
<html ng-app="plunker">
	<head>
		<meta charset="utf-8" />
		<title>AngularJS Plunker</title>
		<script>document.write('
			<base href="' + document.location + '" />');
		</script>
		<link rel="stylesheet" href="style.css" />
		<script data-require="[email protected]" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
		<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
		<script src="app.js"></script>
	</head>
	<body ng-controller="MainCtrl">
		<div ng-repeat="emp in employee.staff ">
			<div>{{emp.id}} {{emp.Name}}</div>
		</div>
		<button ng-click="update()">
     Update
    </button>
	</body>
</html>
0
$scope.updateItem = function(item) {
  for (var i = 0; i < $cope.employee.staff.length; i++) {
    if (item.id === $scope.employee.staff[i].id) {
      $scope.employee.staff[i] = item;
      break;
    }
  }
}

Теперь, если вы хотите обновить $ Scope.employee с id 5, просто выполните:

$scope.updateItem({
  id: 5,
  Name: 'bill',
  email: '[email protected]'
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню