data: () => ({
items: [ ... ],
active: null,
}),
<v-xxx
v-for="(n, i) in items"
:показыватьДополнительныйКонтент="active === i"
@переключитьОтображениеДополнительногоКонтента="active = active === i ? null : i"
...
const xxx = Vue.observable({ active: null });
computed: {
показыватьДополнительныйКонтент() {
return xxx.active === this.какоеТоСвойствоСУникальнымЗначением;
},
},
<div v-if="показыватьДополнительныйКонтент">
...
</div>
methods: {
переключитьОтображениеДополнительногоКонтента() {
xxx.active = this.показыватьДополнительныйКонтент
? null
: this.какоеТоСвойствоСУникальнымЗначением;
},
},
<button @click="переключитьОтображениеДополнительногоКонтента">
{{ показыватьДополнительныйКонтент ? 'hide' : 'show' }}
</button>
Куда прописывать @click?Тем элементам меню, от которых вы хотите реакции от клика.
При нажатии на определённый элемент меню, должно отображаться определённый контентВ простом случае достаточно, чтобы в коде были все элементы, возможные для отображения. К каждому из них добавляйте условие при котором он должен отображаться.
<template>
<MenuSection @click="selectedEl = 1"></MenuSection>
<MenuSection @click="selectedEl = 2"></MenuSection>
<div v-if="selectedEl === 1"></div>
<div v-if="selectedEl === 2"></div>
</template>
<script setup>
const selectedEl = ref(0)
</script>
Нужно ли дополнительное свойство active? куда прописывать и как менять его?
:class="selectedEl !== 1 ? 'extraClass' : 'extraClass' + ' active'"
<style>
.active {
color: red;
}
</style>
если поставить px-12 больше 12
function transleteArray(obj) {
return Object.values(obj);
}
function generateJsonPatch(obj1, obj2) {
const patch = [];
// Рекурсивно обходим все свойства первого объекта
for (const prop in obj1) {
if (obj1.hasOwnProperty(prop)) {
// Если свойство отсутствует во втором объекте, удаляем его
if (!obj2.hasOwnProperty(prop)) {
patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]});
} else {
// Если свойство является объектом или массивом, рекурсивно обходим его
if (typeof obj1[prop] === "object") {
patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => {
p.path = `/${prop}${p.path}`;
return p;
}));
} else {
// Если значение свойства отличается от значения во втором объекте, обновляем его
if (obj1[prop] !== obj2[prop]) {
patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]});
}
}
}
}
}
// Обходим свойства второго объекта, которых нет в первом объекте
for (const prop in obj2) {
if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) {
// Добавляем новое свойство
patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined});
}
}
return patch;
}
[ { op: 'replace', path: '/colorQty', value: 1, oldVal: 0 } ]
Напиши функцию на javascript, которая принимает в себя два js-объекта или массива, на выходе я должен получить jsonpatch, который можно применить к первому объекту, чтобы получился объект идентичный второму
... вариант без oldValue ...
добавь ещё в каждую операцию jsonpatch и старое значение, чтобы при чтении было понятно, что на что заменяется
Вот обновлённый код функцииgenerateJsonPatch
с добавлением старого значения в каждую операцию jsonpatch:
function generateJsonPatch(obj1, obj2) { const patch = []; // Рекурсивно обходим все свойства первого объекта for (const prop in obj1) { if (obj1.hasOwnProperty(prop)) { // Если свойство отсутствует во втором объекте, удаляем его if (!obj2.hasOwnProperty(prop)) { patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]}); } else { // Если свойство является объектом или массивом, рекурсивно обходим его if (typeof obj1[prop] === "object") { patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => { p.path = `/${prop}${p.path}`; return p; })); } else { // Если значение свойства отличается от значения во втором объекте, обновляем его if (obj1[prop] !== obj2[prop]) { patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]}); } } } } } // Обходим свойства второго объекта, которых нет в первом объекте for (const prop in obj2) { if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) { // Добавляем новое свойство patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined}); } } return patch; }
Каждая операция jsonpatch теперь содержит поле `oldVal`, которое хранит старое значение свойства, которое было изменено. Если свойство было удалено или добавлено, то `oldVal` будет иметь значение `undefined`.
Пример использования:
const obj1 = {a: {b: "hello"}, c: [1, 2, 3]}; const obj2 = {a: {b: "world", d: "foo"}, c: [1, 2, 4, 5], e: "bar"}; const patch = generateJsonPatch(obj1, obj2); console.log(patch); // Output: // [ // {"op":"replace","path":"/a/b","value":"world","oldVal":"hello"}, // {"op":"add","path":"/a/d","value":"foo","oldVal":undefined}, // {"op":"remove","path":"/c/2","oldVal":3}, // {"op":"add","path":"/c/3","value":5,"oldVal":undefined}, // {"op":"add","path":"/e","value":"bar","oldVal":undefined} // ]
Обратите внимание, что полеoldVal
в jsonpatch содержит информацию только о тех свойствах, которые были изменены или удалены. Если свойство не было изменено, то егоoldVal
будет иметь значениеundefined
.
sudo kill -9 35487
function format(str) {
const s = str.length;
const chars = str.split('');
const strWithSpaces = chars.reduceRight((acc, char, i) => {
const spaceOrNothing = ((((s - i) % 3) === 0) ? ' ' : '');
return (spaceOrNothing + char + acc);
}, '');
return ((strWithSpaces[0] === ' ') ? strWithSpaces.slice(1) : strWithSpaces);
}
- console.log(`userId: ${userId}`);
+ console.log('userId:', userId);
git push origin master
означает «отправить локальную ветку master в репозиторий origin». Если в ответ вам выдало сообщение, что нечего отправлять (Everything up-to-date), значит вы сейчас не находитесь в ветке master, а работаете в какой-то другой ветке, либо вообще вышли из всех веток (Detached HEAD). Поэтому команда git commit
добавляет коммит не в master, а куда-то ещё, и соответственно отправлять из мастера нечего.git status
поможет узнать точную причину и подскажет решение. import chalk from 'chalk';
const fetch = require('node-fetch');
module.exports = async () => {
return fetch(URL, {
method: 'POST',
headers: {
'Content-Type': 'application/xml'
}
})
.then((res) => {
return res
})
}
const postRequest = require('./postRequest');
postRequest()
.then(function (res) {
console.log(res);
})