append('div')
должно быть append('xhtml:div')
.created() {
this.popup = _.throttle(function(state) {
this.show = ({
enter: true,
leave: false,
})[state];
}, 500, {
leading: false,
trailing: true,
});
},
this.popup = _.throttle(show => this.show = !!show, 500, {
leading: false,
trailing: true,
});
<a href="#" @mouseenter="popup(1)" @mouseleave="popup(0)">
this.api = this.api.replace(word, 'BOOM')
this.api = this.api.replace(RegExp(`\\b${word}[a-z]*\\b`, 'ig'), 'BOOM')
Понятно, что можно добавить в форму все виды инпутов и, например, использовать
< component :is='нужный инпут в зависимости от пропса'>
this
из всех методов, которые могут быть не последними в цепочке вызовов:function calc(val) {
const self = Object.create(calc.prototype);
self.val = val;
return self;
}
calc.prototype = {
plus(val) {
this.val += val;
return this;
},
minus(val) {
this.val -= val;
return this;
},
valueOf() {
return this.val;
},
};
+calc(0).plus(1); // 1
+calc(1).plus(1).plus(1); // 3
+calc(1).plus(2).plus(3).plus(4).minus(5); // 5
calc(3).plus(7).minus(2) * 3; // 24
99 + calc(1); // 100
const newArr = arr.slice(-5);
arr.splice(0, arr.length - 5);
const kebab = str => str.replace(/\b([A-Z][a-z]*)+\b/g, n => n.replace(/([A-Z])/g, '-$1').replace(/^-/, '').toLowerCase());
console.log(kebab('KebabCase noKebabCase No_Kebab_Case And FuckDonaldTrump!!')); // "kebab-case noKebabCase No_Kebab_Case and fuck-donald-trump!!"
for (const n of words) {
string = string.replace(RegExp(`\\b${n}\\b`, 'gi'), m => `<a href="#">${m}</a>`);
}
const newString = words.reduce((acc, n) => {
return acc.replace(RegExp(`\\b${n}\\b`, 'gi'), '<a href="#">$&</a>');
}, string);
audio.setVolume(0.5);
. зачем передавать: @my-event="myEvent"
?
aa
:<modal-notifications :aa.sync="isActive" :message="message"></modal-notifications>
closeModalWindow() {
this.$emit('update:aa', false);
},
v-model
. Надо будет заменить имя параметра с aa
на value
(ну или настроить model):props: ['aa', 'message'],
---> props: [ 'value', 'message' ],
:class="{'is-active': aa}"
---> :class="{ 'is-active': value }"
closeModalWindow() {
this.$emit('input', false);
},
<modal-notifications v-model="isActive" :message="message"></modal-notifications>
Я же делаю из потомка this.$emit('my-event', this.isActive)
которое слушает родитель.
@my-event="myEvent"
.эмит выше вроде бы не нужен, но без него не работает
И еще вопрос. Что делает:
myEvent: function(isActive) { this.isActive = isActive }
Почему оно должно что-то принимать? Можно же просто значение из data взять.
this.isActive
. Который вам обновить надо. Обновить значением, которое присылает диалоговое окно. Значением, которое передаётся в (т.е., которое принимает) обработчик события. Посмотрел поддержку forEach: она отличная.
forEach
- принадлежащий Array.prototype
. У вас ошибка возникает из-за отсутствия NodeList.prototype.forEach
.forEach
массива:Array.prototype.forEach.call(items, function(n) {
// ...
});
for (var i = 0; i < items.length; i++) {
// ...
}
for (var n of items) {
// ...
}
const el = currentTarget.querySelector('селектор элемента');
if (el) {
el.remove();
}
const tableEl = document.querySelector('селектор_таблицы');
const colIndex = индекс_столбца;
const colData = Array.from(
tableEl.rows,
({ cells: { [colIndex]: n } }) => n && n.textContent
);
// или
const colData = Array.prototype.map.call(
tableEl.querySelectorAll(`tr > :nth-child(${colIndex + 1})`),
n => n.innerText
);
// или
const colData = [];
for (const n of table.querySelectorAll('tr')) {
colData.push((n.children[colIndex] || {}).innerHTML);
}
const parentSelector = '.parent';
const className = 'custom';
document.querySelectorAll(`${parentSelector} > .${className}`).forEach(n => {
n.classList.remove(className);
});
// или
for (const n of document.querySelector(parentSelector).children) {
n.className = n.className.replace(RegExp(`(^| )${className}(?= |$)`), '').trim();
}
.colors
вызывайте функцию пересчёта:$('.colors').on('click', '.color', function() {
$(this).toggleClass('checked');
calculate();
});
.colors .checked
и суммирование их data-price
:total += $('.colors .checked', this)
.get()
.reduce((acc, n) => acc + +n.dataset.price, 0);
formData = [];
updateFormData(newLen) {
const oldLen = this.formData.length;
if (oldLen > newLen) {
this.formData.splice(newLen, oldLen);
} else if (oldLen < newLen) {
this.formData.push(...Array.from({ length: newLen - oldLen }, n => ({
/* здесь дефолтные данные блока */
})));
}
}
<input
type="number"
[ngModel]="formData.length"
(ngModelChange)="updateFormData($event)"
>
<div *ngFor="let item of formData;">
<!-- здесь создаёте input'ы, цепляете к ним через [(ngModel)] свойства item'а -->
</div>