this.articles
- это не массив, у массивов метод push есть. Изначально да - массив, но когда вы в created
вызываете getArticles
, производится перезапись свойства. Неплохо было бы разобраться, что на самом деле возвращает запрос на получение статей - уж не объект ли?Да, не массив, а объект. Я просто и так и так пробовал. Смог добавить таким способом.
this.articles = Object.assign(this.articles, response.data.payload);
Но значение добавилось не так как нужно.
Object.assign
модифицирует первый аргумент, а не создаёт новый объект.v-for
(как и методы - forEach
, map
, ...) не будет его обрабатывать. Доставайте из объекта массив значений и уже его элементы добавляйте в articles
:this.articles.push(...Object.values(response.data.payload));
getArticles
можно просто заменить один массив другим:this.articles = Object.values(response.data.payload);
articles
на пустой объект, а в getArticles
по получении данных просто выполняйте присваивание: this.articles = response.data.payload
. А там, где пытаетесь concat
выполнить, создавайте новый объект, в который будут копироваться свойства существующего и результат запроса:this.articles = { ...this.articles, ...response.data.payload };
// или
this.articles = Object.assign({}, this.articles, response.data.payload);
marker.on('popupopen', function(e) {
new Vue({ el: e.popup._contentNode });
});
let index = -1;
setInterval(radios => {
radios.item(index = (index + 1) % radios.length).click();
}, 1000, document.querySelectorAll('.gallery-colors input'));
(function click(radios) {
const radio = radios[-~radios.findIndex(n => n.checked)] || radios[0];
radio.checked = true;
radio.dispatchEvent(new Event('change', { bubbles: true }));
setTimeout(click, 1000, radios);
})([...document.getElementsByName('bmw')]);
size: this.namespaceSize
, а size: { ...this.namespaceSize }
. Или внутри стора копируйте, в мутации. Есть linear-gradient, но там плавный переход цветов...
linear-gradient(to right, white 0%, white 33%, blue 33%, blue 66%, red 66%, red 100%)
<div class="modal-content">
, например.const valueToDel = 'value1';
for (const n of Object.entries(obj)) {
if (n[1] === valueToDel) {
delete obj[n[0]];
}
}
const newObj = Object
.entries(obj)
.reduce((acc, [ k, v ]) => (v !== valueToDel && (acc[k] = v), acc), {});
// или
const newObj = Object.fromEntries(Object
.entries(obj)
.filter(n => n[1] !== valueToDel)
);
$(response).filter('.item').each(function() {
$owl.trigger('add.owl.carousel', this);
});
$owl.trigger('refresh.owl.carousel');
this.timeout = setTimeout(...
beforeRouteLeave(to, from, next) {
clearTimeout(this.timeout);
next();
},
let workingLine = function() {
firstLetter = workingLine[0]
firstLetter.match( /[a-z]|[а-я]/g )
0
, которого нет, т.е., получаете undefined
, и у этого undefined
пытаетесь вызвать строковый метод..b-popup
появляется, он закрывает собой .b-block
, возникает событие mouseleave, и его надо скрывать. А как он скрылся - его надо снова показывать, потому что на .b-block
возникает событие mouseenter. Ну вот так оно по кругу и происходит.pointer-events: none
для .b-popup
. Или поместите .b-popup
внутрь .b-block
. Внутри цикла не работает setTimeout
(async () => {
const data = [ 1, 2, 3, 4, 5 ];
for (const n of data) {
console.log(n);
await new Promise(r => setTimeout(r, 1000));
}
})();
в Storage сохраняются введенные значения, а в инпут - нет
$('#text')
.val(localStorage.getItem('key') || '')
.on('input', e => localStorage.setItem('key', e.target.value));
navContainer: $(this).prev().find('.arrows')
.arrows
и у .i-catalogList
всё-таки был общий предок nextHandler = () => {
const items = [...this.state.items];
items.push(items.shift());
this.setState({ items });
}
prevHandler = () => {
const items = [...this.state.items];
items.unshift(items.pop());
this.setState({ items });
}
<button onClick={this.nextHandler} data-step={-1}>prev</button>
<button onClick={this.nextHandler} data-step={+1}>next</button>
nextHandler = (e) => {
const step = +e.target.dataset.step;
this.setState(({ items }) => ({
items: [ ...items.slice(step), ...items.slice(0, step) ],
}));
}