Digamos que tengo un objeto que contiene una serie de objetos en algunas de sus propiedades. Cada vez que realizo cambios en algunos campos, ya sea un campo en un objeto en una matriz o en el objeto raíz, quiero definir ese objeto como "sucio: verdadero" con un código como este: object.defineProperty(path, '_dirty', true) .
{ "id": "48e143e5-eda0-490a-a87a-dbef128f539e", "parentId": null, "groups": [ { "id": "142c7263-26ab-4169-88bb-5b2b880f3b97", "overviewId": "48e143e5-eda0-490a-a87a-dbef128f539e", "parts": [ { "id": "730adbca-20c0-427a-8228-7000d0553466", "overviewGroupId": "142c7263-26ab-4169-88bb-5b2b880f3b97", }, { "id": "9c749aa0-b1c0-49cd-81c1-272d9bfe5df7", "overviewGroupId": "142c7263-26ab-4169-88bb-5b2b880f3b97", } ], } ], "templateInfo": { "id": "34d2be1c-9b4e-4eb2-b452-82c7929057c8", "name": "Standart OV", "parentId": null, "typeId": 0, "storeId": "ee7bdc31-8c13-4111-9225-cb780b46e1a1" }, "pageTypeInfo": { "id": "016ef17a-4cd7-4096-b387-6b16c39df41e", "typeId": 3, "code": "code A", } }Estoy almacenando este objeto en datos como este:
data() { return { source: {}, } },y tener un vigilante:
source: { handler(newValue, oldValue){ console.log(...arguments) }, deep: true }¿Es posible cambiar la ruta como "groups[0].parts[1].id" y hacer que _dirty sea verdadero para el objeto de destino que se encuentra en la ruta cuando se produce el cambio?
Puede crear un método que actualice el valor usando la función $set así:
update(root, key, value) { this.$set(root, key, value); this.$set(root[key], '__dirty', true); }