Связать объект json с несколькими объектами - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь связать объект json с несколькими объектами.

    $scope.persons = [
        {"prename":"Max", "surname":"Shepherd"},
        {"prename":"Sarah", "surname":"Shepherd"}
    ];
    $scope.contracts = [
        {"contract":"liability", "payment":"8.40"},
        {"contract":"health", "payment":"48.12"}
    ];

// Save new Person
    $scope.newPerson = {};
    $scope.savePerson = function() {
        $scope.persons.push($scope.newPerson);
        $scope.newPerson = {};
    }
// Save new Contract
    $scope.newContract = {};
    $scope.saveContract = function() {
        $scope.contract.push($scope.newContract);
        $scope.newContract = {};
    }

Как сохранить новый контракт и связать его с двумя людьми. например договор ответственности должен быть вложен в 2 человека. Договор здоровья должен быть вложен только 1 человеку. Но контракт также должен быть собственным объектом.

Конечный массив должен выглядеть примерно так:

$scope.persons = [
  {
  "prename":"Max", 
  "surname":"Shepherd",
      "contracts": {
      {"contract":"liability", "payment":"8.40"}
    }
  },
  {
  "prename":"Sarah",
  "surname":"Shepherd",
    "contracts": {
      "contract":"liability", "payment":"8.40"
      "contract":"health", "payment":"48.12"
    }
  }
];

$scope.contracts = [
    {"contract":"liability", "payment":"8.40"},
    {"contract":"health", "payment":"48.12"}
];

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете добавить идентификатор контракта, а затем связать идентификатор с каждым лицом, имеющим контракт.

{"contract": "ответственность", "payment": "8.40", "contractKey":"123"}, {"contract": "health", "payment": "48.12", "contractKey": "321"}

$ scope.persons = [{"prename": "Max", "фамилия": "Пастух", "контракты": {"123", "321"}}, {"prename": "Сара", "фамилия": "Пастух", "контракты": {"123"}}];

Тогда вам понадобится функция для поиска правильных контрактов

function findContractForAllPeople(){
   angular.forEach($persons,function(key,values){
        angular.forEach(values,function(DataKey,val){
          angular.forEach($contracts,function(contractKey,contractDetails) 

           if(DataKey === "contracts"){
             if($scope.contracts.contractKey === val){
               $scope.finalArray[prename] = {"contracts":contractDetails }
           }
        })
      })
   })
}

это создаст объект, который будет выглядеть следующим образом

{
Max:{
"contracts":{"contract":"liability", "payment":"8.40","contractKey":"123"},
{"contract":"health", "payment":"48.12","contractKey":"321"}}
},
Sarah:{
{"contract":"liability", "payment":"8.40","contractKey":"123"}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...