Comments 7
Нектопост какой-то. Если и брать первую версию, то 1.5, там много хороших нововведений. Ну а по-хорошему, второй версией спокойно можно пользоваться уже сейчас. Лучше напишите, как мигрировать с 1-й на вторую.
А я поясню логику, почему опубликовал:
1) В 1.5 практически нету breakes changes, все они находятся в версиях 1.3-1.4, а мигрировать с 1.2 на 1.5 как-то надо, поэтому актуальность тема сохраняет. Объём фич так же в последней версии намного меньше, а описать предыдущие стоило.
2) Ну чего статье пропадать, коль уж была написана, даже если поможет одному человеку — уже хорошо :)
Миграцию я описывал не потому, что мне делать нечего, а потому, что у меня большой опыт миграции достаточно крупных проектов с кучей legacy кода, этим опытом я хотел поделиться. Касательно второй версии у меня пока такого опыта (увы) нет.
в современных браузерах это около 10 милисекунд)
Какие-то цифры из головы. Читаем что такое event loop и понимаем что никакого «фиксированнго» значения по времени мы не получим.
setTimeout(() => { console.log('в современных браузерах это около 10 милисекунд'); }, 0);
while(true) {
// хахаха
}
По сути вся важность $applyAsync — это то что наконец-то не нужно проверять, не запущен ли еще кем-то $digest цикл.
С версией 1.4 был добавлен ещё более удобный синтаксис:
А еще стоит заметить что хелпер компонентов доступен в качестве полифила для angular 1.3. Ну это я к тому что бы еще более ускорить переход на ng1.5 и забыть о $scope как о страшном сне. Ваш пример по итогу записывается как:
// да да, 2016-ый год на дворе
class SomeComponent {
$onInit() {
this.updateFullName();
}
set name(value) {
this._name = value;
this.updateFullName();
}
updateFullName() {
this.fullName = `Component name: ${this._name}`;
}
}
app.component('someComponent', {
template: `
<div>{{$ctrl.fullName}}</div>
`,
bindings: {
'name': '='
},
controller: SomeComponent
});
контролер получился относительно здоровым что бы в биндингах был смысл. А то у вас оно как-то… не смотрится. Ну и пример как обойтись без ватчеров.
Какие-то цифры из головы. Читаем что такое event loop и понимаем что никакого «фиксированнго» значения по времени мы не получим.
Согласен, действительно складывается впечатление, что я имею в виду некую фиксированную задержку, в то время как я говорил о возможной минимальной задержке. Впрочем, с цифрой для действительно современных браузеров я тоже загнул...
Сторонние компоненты и полифиллы я намеренно не рассматривал, только то, что идёт из коробки. Спасибо что дополнили примером.
$httpProvider.useApplyAsync
слышил впервые.
AngularJS: Миграция с 1.2 на 1.4, ч.2