Skip to content

Commit fc13cd5

Browse files
committed
2 parents 3c5c95f + 947a9c9 commit fc13cd5

File tree

2 files changed

+73
-3
lines changed

2 files changed

+73
-3
lines changed

README.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ While this guide explains the *what*, *why* and *how*, I find it helpful to see
11171117
### Restrict to Elements and Attributes
11181118
###### [Style [Y074](#style-y074)]
11191119
1120-
- When creating a directive that makes sense as a standalone element, allow restrict `E` (custom element) and optionally restrict `A` (custom attribute). Generally, if it could be its own control, `E` is appropriate. General guideline is allow `EA` but lean towards implementing as an element when its standalone and as an attribute when it enhances its existing DOM element.
1120+
- When creating a directive that makes sense as a stand-alone element, allow restrict `E` (custom element) and optionally restrict `A` (custom attribute). Generally, if it could be its own control, `E` is appropriate. General guideline is allow `EA` but lean towards implementing as an element when its stand-alone and as an attribute when it enhances its existing DOM element.
11211121
11221122
*Why?*: It makes sense.
11231123
@@ -2556,6 +2556,31 @@ Unit testing helps maintain clean code, as such I included some of my recommenda
25562556
.constant('moment', moment);
25572557
})();
25582558
```
2559+
2560+
###### [Style [Y241](#style-y241)]
2561+
2562+
- Use constants for values that do not change and do not come from another service. When constants are used only for a module that may be reused in multiple applications, place constants in a file per module named after the module. Until this is required, keep constants in the main module in a `constants.js` file.
2563+
2564+
*Why?*: A value that may change, even infrequently, should be retrieved from a service so you do not have to change the source code. For example, a url for a data service could be placed in a constants but a better place would be to load it from a web service.
2565+
2566+
*Why?*: Constants can be injected into any angular component, including providers.
2567+
2568+
*Why?*: When an application is separated into modules that may be reused in other applications, each stand-alone module should be able to operate on its own including any dependent constants.
2569+
2570+
```javascript
2571+
// Constants used by the entire app
2572+
angular
2573+
.module('app.core')
2574+
.constant('moment', moment);
2575+
2576+
// Constants used only by the sales module
2577+
angular
2578+
.module('app.sales')
2579+
.constant('events', {
2580+
ORDER_CREATED: 'event_order_created',
2581+
INVENTORY_DEPLETED: 'event_inventory_depleted'
2582+
});
2583+
```
25592584
25602585
**[Back to top](#table-of-contents)**
25612586

i18n/it-IT.md

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,7 +1255,9 @@ Nonostante questa guida spieghi i *cosa*, *come* e *perché*, trovo che sia di a
12551255
12561256
*Perché?*: Porre la logica di start-up in una posizione consistente nel controller la rende semplice da localizzare, più consistente da testare e aiuta a prevenire la diffusione di logica su tutto il controller.
12571257
1258-
Nota: Se hai necessità di annullare condizionalmente il route prima di iniziare ad usare il controller, usa piuttosto una risoluzione nella route.
1258+
*Perché?*: La funzione `activate` del controller rende il riuso della logica adatto in caso di un refresh del controller/view, tiene la logica assieme, porta l'utente alla view più rapidamente, rende le animazini più facili su `ng-view` o `ui-view`e da la sensazione all'utente di istantaneità.
1259+
1260+
Nota: Se hai necessità di annullare condizionalmente il route prima di iniziare ad usare il controller, usa piuttosto una [risoluzione nella route](#stile-y081).
12591261
12601262
```javascript
12611263
/* evitare */
@@ -1294,10 +1296,16 @@ Nonostante questa guida spieghi i *cosa*, *come* e *perché*, trovo che sia di a
12941296
### Promesse risolte nel route
12951297
###### [Stile [Y081](#stile-y081)]
12961298
1297-
- Quando un controller dipende dalla dal fatto che una promessa sia risolta risolvi queste dipendenze nel `$routeProvider` prima che la logica del controller sia eseguita. Se hai bisogno di annullare condizionalmente una route prima che il controller sia attivato, usa un resolver della route.
1299+
- Quando un controller dipende dal fatto che una promessa sia risolta prima che il controller sia attivato, risolvi queste dipendenze nel `$routeProvider` prima che la logica del controller sia eseguita. Se hai bisogno di annullare condizionalmente una route prima che il controller sia attivato, usa un resolver della route.
1300+
1301+
- Usa la risoluzione della route quando decidi di annullare la route prima ancora di iniziara la transizione alla view.
12981302
12991303
*Perché?*: Un controller può richiedere dei dati prima che si carichi. Quei dati potrebbero venire da una promessa di una factory su misura oppure [$http](https://docs.angularjs.org/api/ng/service/$http). Usando un [resolver della route](https://docs.angularjs.org/api/ngRoute/provider/$routeProvider) acconsenti che la promessa sia risolta prima che la logica del controller sia eseguita, così da poter prendere decisioni basandosi sui dati provenienti dalla promessa.
13001304
1305+
*Perché?*: Il codice è eseguito dopo la route e nella funzione di attivazione del controller. La view inizia il caricamento immediatamente. Il data binding è effettivo quando le promesse nella funzine di attivazione sono risolte. Una animazione di “attendere” può essere mostrata durante la transizione alla view (via ng-view o ui-view).
1306+
1307+
Nota: Il codice è eseguito prima il route per mezo di una promessa. Il rifiuto della promessa annulla la route. "resolve" fa attendere la view mentre viene risolta. Una animazione “attendere” può essere mostrata prima della risoluzione e durante tutta la transizione alla vista. Se desideri di arrivare alla view più in fretta e non hai bisogno di un punto di controllo per decidere se vuoi navigare alla view, considera piuttosto [Promesse di attivazione di un Controller](#stile-y080).
1308+
13011309
```javascript
13021310
/* evitare */
13031311
angular
@@ -1349,7 +1357,44 @@ Nonostante questa guida spieghi i *cosa*, *come* e *perché*, trovo che sia di a
13491357
vm.movies = moviesPrepService.movies;
13501358
}
13511359
```
1360+
1361+
Note: L'esempio sotto mostra il punto di risoluzione della route in una funzione con il nome per cui è più semplice da fare il debug e più semplice da gestire nella iniezione delle dependenze.
1362+
1363+
```javascript
1364+
/* meglio */
1365+
1366+
// route-config.js
1367+
angular
1368+
.module('app')
1369+
.config(config);
1370+
1371+
function config($routeProvider) {
1372+
$routeProvider
1373+
.when('/avengers', {
1374+
templateUrl: 'avengers.html',
1375+
controller: 'Avengers',
1376+
controllerAs: 'vm',
1377+
resolve: {
1378+
moviesPrepService: moviesPrepService
1379+
}
1380+
});
1381+
}
1382+
1383+
function moviePrepService(movieService) {
1384+
return movieService.getMovies();
1385+
}
1386+
1387+
// avengers.js
1388+
angular
1389+
.module('app')
1390+
.controller('Avengers', Avengers);
13521391

1392+
Avengers.$inject = ['moviesPrepService'];
1393+
function Avengers(moviesPrepService) {
1394+
var vm = this;
1395+
vm.movies = moviesPrepService.movies;
1396+
}
1397+
```
13531398
Nota: La dipendenza del codice di esempio da `movieService` non è a prova di minificazione in se stessa. Per i dettagli su come rendere questo codice a prova di minificazione, vedi la sezione sulla [dependency injection](#manual-annotating-for-dependency-injection) e sulla [minificazione e annotazione](#minification-and-annotation).
13541399
13551400
**[Torna all'inizio](#tavola-dei-contenuti)**

0 commit comments

Comments
 (0)