You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: JavaScript/Anatomy_of_Backbone/1.introduction.md
+6-6Lines changed: 6 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -13,12 +13,12 @@ var Appointment = Backbone.Model.extend({});
13
13
```
14
14
15
15
_Пояснение._
16
-
Чтобы не путаться в большом количестве данных и не терять эти данные, было принято решение разделить код. Отлично подходит для этого модель mvc (models, controllers, views). Подобная система действует в Backbone.js. Для создания модели здесь существует команда [Backbone.Model.extend({})](http://backbonejs.ru/#Model-extend).
16
+
Чтобы не путаться в большом количестве данных и не терять эти данные, было принято решение разделить код. Отлично подходит для этого модель mvc (models, views, controllers). Подобная система действует в Backbone.js. Для создания модели здесь существует команда [Backbone.Model.extend({})](http://backbonejs.ru/#Model-extend).
17
17
18
18
## 1.3 Экземпляр модели
19
19
20
20
_Задание._
21
-
Теперь, когда у нас есть модель класса Appointment, создадим его первый экземпляр и присвоим его переменной appointment. Передадим заголовок для appointment при его создании.
21
+
Теперь, когда у нас есть модель класса Appointment, создадим его первый экземпляр, который присвоим переменной appointment. Передадим заголовок для appointment при его создании.
22
22
23
23
_Решение._
24
24
Переменной appointment присвоим экземпляр класса Appointment, передав в него title со значением 1:
@@ -32,7 +32,7 @@ _Пояснение._
32
32
## 1.4 Класс представления
33
33
34
34
_Задание._
35
-
Ну посмотрите на это, у нас есть самый первый appointment. Но он не такой полезный, сидит там, в глубине души нашего браузера. Для его отображения, создадим сначала класс представления и назовём его AppointmentView.
35
+
Ну посмотрите на это, у нас есть самый первый appointment. Но он пока бесполезный: сидит там, в глубине души нашего браузера. Для его отображения создадим сначала класс представления и назовём его AppointmentView.
36
36
37
37
_Решение._
38
38
Создадим класс представления:
@@ -46,7 +46,7 @@ _Пояснение._
46
46
## 1.5 Экземпляр представления
47
47
48
48
_Задание._
49
-
Идеальное место, чтобы поместить код отображения теперь существует! Время создать первый экземпляр AppointmentView. При этом включим экземпляр модели appointment, который мы недавно создали. Присвоим этот экземпляр переменной.
49
+
Теперь у нас есть идеальное место для кода отображения! Время создать первый экземпляр AppointmentView. При этом включим экземпляр модели appointment, который мы недавно создали. И присвоим этот экземпляр переменной.
50
50
51
51
_Решение._
52
52
Создадим переменную appointmentView и присвоим ей новый экземпляр класса AppointmentView с экземпляром модели appointment:
@@ -60,7 +60,7 @@ _Пояснение._
60
60
## 1.6 Определение визуализации
61
61
62
62
_Задание._
63
-
Наш экземпляр класса AppointmentView почти готов, всё, что осталось сделать - определить визуализирующую функцию, чтобы мы могли на самом деле создать некоторые HTML. Получив функцию визуализации добавим тег `<li>` к элементу верхнего уровня представления. Используем this.model.get('title') как содержание `<li>`.
63
+
Наш экземпляр класса AppointmentView почти готов, всё, что осталось сделать - определить визуализирующую функцию, чтобы мы могли на самом деле создать некоторые HTML. Получив функцию визуализации, добавим тег `<li>` к элементу верхнего уровня представления. Используем this.model.get('title') как содержание `<li>`.
64
64
65
65
_Решение._
66
66
@@ -74,7 +74,7 @@ var AppointmentView = Backbone.View.extend({
74
74
```
75
75
76
76
_Пояснение._
77
-
Метод extend() может содержать объект с некоторыми свойствами. Одним из них является [render](http://backbonejs.ru/#View-render). По умолчанию он реализован как пустая функция. Но его можно переопределить кодом отрисовки шаблона с данными модели и обновления this.el новым HTML. Метод [get](http://backbonejs.ru/#Model-get) отдаёт текущее значение атрибута модели. Каждое представление имеет верхнеуровневый элемент ([el](http://backbonejs.ru/#View-el)).
77
+
Метод extend() может содержать объект с некоторыми свойствами. Одним из них является [render](http://backbonejs.ru/#View-render). По умолчанию он реализован как пустая функция. Но его можно переопределить с помощью кода отрисовки шаблона с данными модели и обновления this.el новым HTML. Метод [get](http://backbonejs.ru/#Model-get) отдаёт текущее значение атрибута модели. Каждое представление имеет верхнеуровневый элемент ([el](http://backbonejs.ru/#View-el)).
Copy file name to clipboardExpand all lines: JavaScript/Anatomy_of_Backbone/2.models.md
+11-11Lines changed: 11 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ _Пояснение._
24
24
_Задание._
25
25
В консоли обнаружен странный баг. Каждый новый Appointment имеет ту же самую дату вместо даты и времени создания экземпляра.
26
26
Это потому, что new Date() определялась один раз, когда впервые была создана модель Appointment, а не переопределялась каждый раз при создании нового экземпляра.
27
-
Чтобы исправить это, присвоим функцию для defaults, а не просто объект. Перенесём объект ниже, в функцию, которая будет его возвращать. Это приведёт к тому, что по умолчанию будет вычистятся время создания каждого нового экземпляра.
27
+
Чтобы исправить это, присвоим defaults функцию, а не просто объект. А объект перенесём в функцию, чтобы она его возвращала. Это придаст большую гибкость и заставит дефолтное время вычисляться каждый раз при создании нового экземпляра.
28
28
29
29
_Решение._
30
30
Сделаем так, чтобы свойство defaults имело в качестве значения не просто объект, а возвращаемый функцией объект:
@@ -45,29 +45,29 @@ _Пояснение._
45
45
## 2.4 Выборка с url
46
46
47
47
_Задание._
48
-
Dr. Goodparts заканчивал расплачиваться за сервер и заметил это с его несколькими первыми встречами. К счастью для нас, он купил пакет REST с дополнением JSON.
48
+
Dr. Goodparts заканчивал рассматривать сервер и заметил неверные url. К счастью для нас, у него есть пакет REST с JSON.
49
49
Направим корневой url модели Appointment в конечную точку /appointments.
50
-
Затем, создадим новый Appointment с id 1 и сделаем выборку этих данных из сервера.
50
+
Затем создадим новый Appointment с id 1 и сделаем выборку соответствующих данных из сервера.
51
51
52
52
_Решение._
53
-
В объект аргумента расширения модели Backbone укажем адрес корневого url. Затем создадим новый Appointment с id 1 и сделаем выборку этих данных из сервера:
53
+
В объекте аргумента расширения модели Backbone укажем адрес корневого url. Затем создадим новый Appointment с id 1 и сделаем выборку соответствующих данных из сервера:
54
54
```javascript
55
55
var Appointment =Backbone.Model.extend({urlRoot:'/appointments'});
56
56
var appointment =newAppointment({id:1})
57
57
appointment.fetch();
58
58
```
59
59
60
60
_Пояснение._
61
-
По умолчанию, url возвращает относительный URL, по которому ресурс модели должен располагаться на сервере и обращается к Collection#url, чтобы сгенерировать его. Чтобы генерировать методы исходя из id, используется свойство [urlRoot](http://backbonejs.ru/#Model-defaults). Чтобы обновить данные с сервера, используем метод [fetch()](http://backbonejs.ru/#Model-fetch).
61
+
По умолчанию, url возвращает относительный URL, по которому ресурс модели должен располагаться на сервере и обращается к Collection#url, чтобы сгенерировать его. Для генерации метода исходя из id, используется свойство [urlRoot](http://backbonejs.ru/#Model-urlRoot). Чтобы обновить данные с сервера, используем метод [fetch()](http://backbonejs.ru/#Model-fetch).
62
62
63
63
## 2.5 Синхронизация изменений
64
64
65
65
_Задание._
66
-
Установка urlRoot модели Appointment позволяет нам делать болше, чем просто выборку из сервера, оно также даёт нам возможность синхронизировать изменения сделанные для экземпляров модели.
66
+
Установка urlRoot модели Appointment позволяет нам делать болше, чем просто выборку из сервера, это также даёт нам возможность синхронизировать изменения, сделанные для экземпляров модели.
67
67
Dr. Goodparts чувствует себя сегодня не хорошо, так что нам нужно отменить его встречи. Установим атрибут cancelled в true и сохраним appointment для сервера.
68
68
69
69
_Решение._
70
-
С помощью метода set установим значение атрибута cancelled true, а затем сохраним это:
70
+
С помощью метода set установим значение атрибута cancelled true, а затем сохраним изменения:
71
71
```javascript
72
72
var appointment =newAppointment({id:1});
73
73
appointment.set({cancelled:true});
@@ -81,7 +81,7 @@ _Пояснение._
81
81
82
82
_Задание._
83
83
Dr. Goodparts растроился, что он не был уведомлён, когда мы отменили его последнюю встречу.
84
-
Добавим слушателя для экземпляра модели appointment для всплывающего окна предупреждения (используя alert) всякий раз при изменении атрибутов модели.
84
+
Добавим слушателя для экземпляра модели appointment, чтобы всякий раз при изменении атрибутов модели всплывало окно предупреждения (alert) .
85
85
86
86
_Решение._
87
87
Создадим слушателя события change, в котором будет выводиться всплывающее окно при любом изменении атрибутов:
@@ -99,7 +99,7 @@ _Пояснение._
99
99
100
100
_Задание._
101
101
Браузер Dr. Goodparts потерпел крушение из-за слишком большого количества предупреждений.
102
-
Вместо прослушивания для всех изменённых атрибутов, прослушаем и предупредим только когда изменения сделаны для атрибута cancelled.
102
+
Вместо прослушивания всех изменённых атрибутов, прослушаем и предупредим только когда изменения сделаны для атрибута cancelled.
103
103
104
104
_Решение._
105
105
Укажем, что прослушиваться должно только изменение атрибута cancelled:
@@ -115,8 +115,8 @@ _Пояснение._
115
115
## 2.8 Возвращая наши атрибуты
116
116
117
117
_Задание._
118
-
Мы уже видели, как можно использовать get для доступа к атрибутам в экземпляре модели, но что если мы хотим их все сразу?
119
-
Используя функцию console.log для лога JSON экземпляра appointment с помощью toJSON.
118
+
Мы [уже видели](https://github.com/preigile/codeschool-hints/blob/master/JavaScript/Anatomy_of_Backbone/1.introduction.md#16-%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8), как можно использовать get для доступа к атрибутам в экземпляре модели, но что если мы хотим их все сразу?
119
+
Используем функцию console.log для лога JSON экземпляра appointment с помощью toJSON.
Copy file name to clipboardExpand all lines: JavaScript/Anatomy_of_Backbone/4.models_and_views.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
## 4.2 Отмена встречи
4
4
5
5
_Задание._
6
-
Dr. Goodparts довольно чудной, он отменил немного встреч недавно. Для лёгкости он попросил сделать в приложении возможным отменять встречи по одному клику.
6
+
Dr. Goodparts довольно чудной, он отменил немного встреч недавно. Для лёгкости, он попросил сделать в приложении возможным отменять встречи по одному клику.
7
7
Добывим ссылку к template AppointmentView, который, при клике, установит модель удалённого атрибута в true.
8
8
```javascript
9
9
var AppointmentView =Backbone.View.extend({
@@ -40,7 +40,7 @@ _Здание._
40
40
Создадим функцию cancel в моделе Appointment, которой установим атрибут cancelled модели в true и вызовем эту функцию из представления. (Совет: убедиться, что код помещён в правильную закладку).
41
41
42
42
_Решение._
43
-
Переносим функцию cancel в Models, без метода model. А во Views поместим в метод cancel вызов cancel из Models:
43
+
Переносим функцию cancel в Models, без метода model. А во Views поместим в метод cancel вызов cancel из Models:
44
44
Views:
45
45
```javascript
46
46
var AppointmentView =Backbone.View.extend({
@@ -69,7 +69,7 @@ _Пояснение._
69
69
## 4.4 Синхронизация изменений
70
70
71
71
_Задание._
72
-
Теперь мы получили замечательное место для синхронизации нашей отмены на сервер. Обновим функцию Appointment's cancel, чтобы сохранить модель после установки её атрибуту cancelled.
72
+
Теперь мы получили замечательное место для отправки нашей отмены на сервер. Обновим функцию Appointment's cancel, чтобы сохранить модель после установки её атрибуту cancelled.
Copy file name to clipboardExpand all lines: JavaScript/Anatomy_of_Backbone/5.collections.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
## 5.2 Класс collection
4
4
5
5
_Задание._
6
-
Dr. Goodparts теряет тонну бизнесса, потому что его приложение может обрабатывать только один appointment за раз! Кто думал, что это хорошая идея?
6
+
Dr. Goodparts теряет тонну бизнесса, потому что его приложение может обрабатывать только один appointment за раз! Кто решил, что это хорошая идея?
7
7
Начнём улучшать сложившуюся ситуацию. Определим новый класс collection, названный AppointmentList и убедимся, что он обрабатывает модель Appointment.
8
8
9
9
_Решение._
@@ -119,11 +119,11 @@ _Пояснение._
119
119
## 5.8 Итерация
120
120
121
121
_Задание._
122
-
Есть много appointments в нашей коллекции и Dr. Goodparts хочет список всех их заголовков, чтобы он смог привести в порядок своё оборудование за день.
122
+
В нашей коллекции есть много appointments и Dr. Goodparts хочет список всех их заголовков, чтобы он смог привести в порядок свои встречи за день.
123
123
Используя итерацию функции map, вернём массив заголовков appointment и присвоим переменной titles.
124
124
125
125
_Решение._
126
-
Переменной titles присвоим экземпляр appointment с вызовом метода map. Передадим методу коллбек с методом Appointment в качестве аргумента, а в теле вернём массив полученных заголовков:
126
+
Переменной titles присвоим экземпляр appointment с вызовом метода map. Передадим методу коллбек с Appointment в качестве аргумента, а в теле вернём массив полученных заголовков:
127
127
```javascript
128
128
var titles =appointments.map(function (Appointment) {
0 commit comments