|
1221 | 1221 | ExampleController.$inject = ['$scope'];
|
1222 | 1222 |
|
1223 | 1223 | function ExampleController($scope) {
|
1224 |
| - // Внедрение $scope сразу в сравнение |
| 1224 | + // Внедрение $scope сразу для параметра сравнения |
1225 | 1225 | var vm = this;
|
1226 | 1226 |
|
1227 | 1227 | vm.min = 3;
|
|
1241 | 1241 |
|
1242 | 1242 | **[Back to top](#table-of-contents)**
|
1243 | 1243 |
|
1244 |
| -## Resolving Promises for a Controller |
| 1244 | +## Работа с Объектами Promise в Контроллерах |
1245 | 1245 |
|
1246 |
| -### Controller Activation Promises |
| 1246 | +### Активация объектов promise в контроллере |
1247 | 1247 | ###### [Style [Y080](#style-y080)]
|
1248 | 1248 |
|
1249 |
| - - Resolve start-up logic for a controller in an `activate` function. |
| 1249 | + - Размещайте стартовую начальную логику для контроллера в функции `activate`. |
1250 | 1250 |
|
1251 |
| - *Why?*: Placing start-up logic in a consistent place in the controller makes it easier to locate, more consistent to test, and helps avoid spreading out the activation logic across the controller. |
| 1251 | + *Почему?*: Размещение стартовой логики в согласованом месте контроллера позволяет ее быстрее находить, более согласованно тестить, и позволить не разбразывать по всему контроллеру логику активации. |
1252 | 1252 |
|
1253 |
| - *Why?*: The controller `activate` makes it convenient to re-use the logic for a refresh for the controller/View, keeps the logic together, gets the user to the View faster, makes animations easy on the `ng-view` or `ui-view`, and feels snappier to the user. |
| 1253 | + *Почему?*: Функция `activate` делает удобным повторное использование логики для обновления контроллера/представления, держит все логику вместе, делает более быстрой работу пользователя с представлением, делает анимацию более простой в директивами `ng-view` и `ui-view`, ну и делает пользователя более энергичным и быстрым, ориентируясь в коде. |
1254 | 1254 |
|
1255 |
| - Note: If you need to conditionally cancel the route before you start use the controller, use a [route resolve](#style-y081) instead. |
| 1255 | + Замечание: Если вам нужно при каком-то условии отменить маршрут перед началом использования контроллера, используйте для этого [route resolve](#style-y081). |
1256 | 1256 |
|
1257 | 1257 | ```javascript
|
1258 |
| - /* avoid */ |
| 1258 | + /* избегайте этого */ |
1259 | 1259 | function Avengers(dataservice) {
|
1260 | 1260 | var vm = this;
|
1261 | 1261 | vm.avengers = [];
|
|
1269 | 1269 | ```
|
1270 | 1270 |
|
1271 | 1271 | ```javascript
|
1272 |
| - /* recommended */ |
| 1272 | + /* рекомендовано */ |
1273 | 1273 | function Avengers(dataservice) {
|
1274 | 1274 | var vm = this;
|
1275 | 1275 | vm.avengers = [];
|
|
1288 | 1288 | }
|
1289 | 1289 | ```
|
1290 | 1290 |
|
1291 |
| -### Route Resolve Promises |
| 1291 | +### Работа с Объектами Promise в Маршрутах |
1292 | 1292 | ###### [Style [Y081](#style-y081)]
|
1293 | 1293 |
|
1294 |
| - - When a controller depends on a promise to be resolved before the controller is activated, resolve those dependencies in the `$routeProvider` before the controller logic is executed. If you need to conditionally cancel a route before the controller is activated, use a route resolver. |
| 1294 | + - Если контроллер зависит от объекта promise, от результата которого зависит активация контроллера, то разрешайте/получайте эти зависимости в `$routeProvider`, перед тем как логика контроллера будет выполена. Если вам нужно по какому-то условию отменить маршрут перед активацией контроллера, то используйте обработчик маршрутов. |
1295 | 1295 |
|
1296 |
| - - Use a route resolve when you want to decide to cancel the route before ever transitioning to the View. |
| 1296 | + - Используйте обработчик маршрутов, если вы решили в последствии отменить маршут до перехода к представлению. |
1297 | 1297 |
|
1298 |
| - *Why?*: A controller may require data before it loads. That data may come from a promise via a custom factory or [$http](https://docs.angularjs.org/api/ng/service/$http). Using a [route resolve](https://docs.angularjs.org/api/ngRoute/provider/$routeProvider) allows the promise to resolve before the controller logic executes, so it might take action based on that data from the promise. |
| 1298 | + *Почему?*: Контроллер может потребовать данные перед своей загрузкой. Эти данные могут прийти из promise объекта через пользовательскую фабрику или [$http](https://docs.angularjs.org/api/ng/service/$http). Использование [route resolve](https://docs.angularjs.org/api/ngRoute/provider/$routeProvider) дает возможность объекту promise разрешиться перед тем как логика контроллера выполнится, тогда мы сможем выполнить действие, зависящее от результата объекта promise. |
1299 | 1299 |
|
1300 |
| - *Why?*: The code executes after the route and in the controller’s activate function. The View starts to load right away. Data binding kicks in when the activate promise resolves. A “busy” animation can be shown during the view transition (via ng-view or ui-view) |
| 1300 | + *Почему?*: Код выполняется после маршрута и в активационной функции контроллера. После этого сразу же начинает загружаться представление. Связывание данных начинается, когда активационнный объект promisе разрешился/выполнился. Анимация "прогресса" может быть показана время передачи представления (via ng-view or ui-view). |
1301 | 1301 |
|
1302 |
| - Note: The code executes before the route via a promise. Rejecting the promise cancels the route. Resolve makes the new view wait for the route to resolve. A “busy” animation can be shown before the resolve and through the view transition. If you want to get to the View faster and do not require a checkpoint to decide if you can get to the View, consider the [controller `activate` technique](#style-y080) instead. |
| 1302 | + Замечание: Код запускается перед маршрутом через объект promise. Отклонение promise отменяет маршрут. Разрешение заставляет ожидать новое представление, когда маршрут разрешится. Анимация “прогресса” может быть показана перед разрешением и через передачу представления. Если вам нужно получить представление быстрее и вам не нужна точка решения получать ли представление, используйте тогда [controller `activate` technique](#style-y080). |
1303 | 1303 |
|
1304 | 1304 | ```javascript
|
1305 |
| - /* avoid */ |
| 1305 | + /* избегайте этого */ |
1306 | 1306 | angular
|
1307 | 1307 | .module('app')
|
1308 | 1308 | .controller('Avengers', Avengers);
|
1309 | 1309 |
|
1310 | 1310 | function Avengers(movieService) {
|
1311 | 1311 | var vm = this;
|
1312 |
| - // unresolved |
| 1312 | + // не определено |
1313 | 1313 | vm.movies;
|
1314 |
| - // resolved asynchronously |
| 1314 | + // определено асинхронно |
1315 | 1315 | movieService.getMovies().then(function(response) {
|
1316 | 1316 | vm.movies = response.movies;
|
1317 | 1317 | });
|
1318 | 1318 | }
|
1319 | 1319 | ```
|
1320 | 1320 |
|
1321 | 1321 | ```javascript
|
1322 |
| - /* better */ |
| 1322 | + /* это лучше */ |
1323 | 1323 |
|
1324 | 1324 | // route-config.js
|
1325 | 1325 | angular
|
|
1352 | 1352 | }
|
1353 | 1353 | ```
|
1354 | 1354 |
|
1355 |
| - Note: The example below shows the route resolve points to a named function, which is easier to debug and easier to handle dependency injection. |
| 1355 | + Замечание: В примере ниже показано, как разрешение маршрута указывает на именованную функцию, которую легче отлаживать и легче оперировать встроенной зависимостью. |
1356 | 1356 |
|
1357 | 1357 | ```javascript
|
1358 |
| - /* even better */ |
| 1358 | + /* еще лучше */ |
1359 | 1359 |
|
1360 | 1360 | // route-config.js
|
1361 | 1361 | angular
|
|
1389 | 1389 | vm.movies = moviesPrepService.movies;
|
1390 | 1390 | }
|
1391 | 1391 | ```
|
1392 |
| - Note: The code example's dependency on `movieService` is not minification safe on its own. For details on how to make this code minification safe, see the sections on [dependency injection](#manual-annotating-for-dependency-injection) and on [minification and annotation](#minification-and-annotation). |
| 1392 | + Замечание: Пример кода зависимости от `movieService` не безопасен для минификации. Подробности от том как сделать этот код бесопасным для минификации, смотрите секции [dependency injection](#manual-annotating-for-dependency-injection) и [minification and annotation](#minification-and-annotation). |
1393 | 1393 |
|
1394 | 1394 | **[Back to top](#table-of-contents)**
|
1395 | 1395 |
|
|
0 commit comments