Любое изменение внутри объекта инициализирует запрос к api. Как такое возможно?

Это возможно, когда внутри объекта, используемого в модели данных Vue.js, определены getter и setter методы для каждого поля объекта, и при изменении любого из полей происходит вызов метода setter.

Когда в модели данных Vue.js устанавливается новое значение для поля, метод setter отрабатывает и отправляет запрос к API с обновленными данными. Новые данные могут быть посланы на сервер для сохранения или использоваться для выполнения другой логики, связанной с API.

Чтобы реализовать эту функциональность в Vue.js, можно воспользоваться функцией Object.defineProperty, которая позволяет определить getter и setter методы для каждого поля объекта. Например:

var obj = {
  field1: 'value1',
  field2: 'value2',
};

Object.defineProperty(obj, 'field1', {
  get: function() {
    return this.field1;
  },
  set: function(newValue) {
    this.field1 = newValue;
    // выполнение запроса к API с обновленными данными
    // например, изменим хранилище на сервере
    api.updateData(newValue);
  },
});

// инициализация Vue компонента с объектом модели данных
new Vue({
  data: obj,
});

Теперь, когда поле field1 изменяется, то происходит вызов метода setter, в результате чего происходит запрос к API с обновленными данными.

Такой подход позволяет реализовать автоматическую синхронизацию данных между клиентским приложением и сервером при изменении данных на клиентской стороне. Он удобен и эффективен, так как позволяет избежать ручной синхронизации данных и обновление состояния приложения при изменении данных в модели.