# Model

The model is a native JSON object. VueFormGenerator will modify this model if the values of the fields change. Model can be a multi-level object. In this case the `model` of field will be like this:

```javascript
model: "address.country"
```

## Example

```javascript
{
    "id": 1,
    "type": "personal",
    "name": "Rozella Hickle",
    "username": "Kelton.Dicki",
    "password": "adGlGG8hTq",
    "email": "Dessie_Metz37@gmail.com",
    "address": {
        "streetC": "343 O'Conner Stravenue Apt. 183",
        "city": "East Traceyfurt",
        "country": "Nepal",
        "zipcode": "17779",
        "geo": {
            "lat": "-21.0406",
            "lng": "86.5714"
        }
    },
    "phone": "031.053.8042 x33435",
    "website": "abraham.net",
    "dob": -196498331535,
    "time": "02:47:20",
    "age": 53,
    "rank": 7,
    "role": "user",
    "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/saulihirvi/128.jpg",
    "skills": [
        "ReactJS",
        "CSS3"
    ],
    "language": "it",
    "status": true,
    "created": 1461100485088
}
```

## Merge & multiple models

If you would like to edit more models, first you have to merge these objects to a work object. For this, there is a helper function:

```javascript
VueFormGenerator.schema.mergeMultiObjectFields(schema, objs)
```

### Parameters

* `schema`: schema object with fields. Merge only the `multi: true` fields
* `objs`: array of models

### Return

Returns the merged JSON object like this:

```javascript
{
    "time": "02:47:20",
    "address": {},
    "status": true
}
```

The function only set those value of properties, where multiple mode is enabled `multi: true` in the fields and the values in every models are the **same** value.

## Create new empty model

You can create a new model with default values. For this use the `VueFormGenerator.schema.createDefaultObject` function. The first parameter can be a base object.

### Example with a generated ID:

```javascript
let newModel = VueFormGenerator.schema.createDefaultObject(schema, { 
  id: getNextID(), 
  created: new Date().valueOf() 
});
```

Result:

```javascript
{
    "id": 6,
    "type": "personal",
    "created": 1462972235132,
    "status": true
}
```

> **Note**: `type` and `status` field have default values in the schema.
