diff --git a/README-de-de.md b/README-de-de.md
deleted file mode 100644
index 766c9c9..0000000
--- a/README-de-de.md
+++ /dev/null
@@ -1,434 +0,0 @@
-# Einleitung
-
-Das Ziel dieses Style Guides ist, eine Sammlung von Best Practices und Gestaltungsrichtlinien für AngularJS-Anwendungen aufzuzeigen.
-Sie wurden aus den folgenden Quellen zusammengestellt:
-
-0. AngularJS-Quelltext
-0. Quelltexte oder Artikel, die ich gelesen habe
-0. Meine eigene Erfahrung
-
-**Hinweis 1:** Hierbei handelt es sich noch um einen Entwurf des Style Guides, dessen vorrangiges Ziel es ist, gemeinschaftlich von der Community entwickelt zu werden. Die gesamte Community wird es daher begrüßen, wenn Lücken gefüllt werden.
-**Hinweis 2:** Bevor du den Richtlinien in einer der Übersetzungen des englischsprachigen Dokuments folgst, vergewissere dich, dass diese aktuell sind. Die jüngste Version des AngularJS Style Guide ist im Dokument README.md.
-
-Du wirst in diesem Style Guide keine allgemeinen Richtlinien für die JavaScript-Entwicklung finden. Solche finden sich unter:
-
-0. [Googles JavaScript-Style-Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozillas JavaScript-Style-Guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHubs JavaScript-Style-Guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockfords JavaScript-Style-Guide](http://javascript.crockford.com/code.html)
-0. [Airbnb JavaScript-Style-Guide](https://github.com/airbnb/javascript)
-
-Für die AngularJS-Entwicklung ist [Googles JavaScript-Style-Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml) empfehlenswert.
-
-Im GitHub-Wiki von AngularJS gibt es einen ähnlichen Abschnitt von [ProLoser](https://github.com/ProLoser), den du dir [hier](https://github.com/angular/angular.js/wiki) ansehen kannst.
-
-# Inhaltsverzeichnis
-* [Allgemein](#allgemein)
- * [Verzeichnisstruktur](#verzeichnisstruktur)
- * [Markup](#markup)
- * [Optimieren des Digest-Zyklus](#optimieren-des-digest-zyklus)
- * [Sonstiges](#sonstiges)
-* [Module](#module)
-* [Controller](#controller)
-* [Direktiven](#direktiven)
-* [Filter](#filter)
-* [Services](#services)
-* [Templates](#templates)
-* [Routing](#routing)
-* [Testen](#testen)
-* [Mitmachen](#mitmachen)
-* [Mitwirkende](#mitwirkende)
-
-# Allgemein
-
-## Verzeichnisstruktur
-
-Da eine große AngularJS-Anwendung viele Komponenten hat, sollten diese mit Hilfe einer Verzeichnishierarchie strukturiert werden.
-Es gibt zwei Basis-Herangehensweisen:
-
-* Auf einer oberen Ebene eine Aufteilung nach Art der Komponenten und auf einer tieferen Ebene eine Aufteilung nach Funktionalität.
-
-Die Verzeichnisstruktur wird in diesem Fall folgendermaßen aussehen:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── page1
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── page2
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── page1
-│ │ │ └── directive1.js
-│ │ └── page2
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── page1
-│ │ └── page2
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-* Auf einer oberen Ebene eine Aufteilung nach Funktionalität und auf einer tieferen Ebene eine Aufteilung nach Art der Komponenten.
-
-Hier ist das entsprechende Layout:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── page1
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── page2
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-* Wenn eine Direktive erstellt wird, kann es sinnvoll sein, alle der Direktive zugehörigen Dateien (d. h. Templates, CSS/SASS-Dateien, JavaScript) in das selbe Verzeichnis zu legen. Wenn du dich für diesen Stil entscheidest, setze ihn konsequent im gesamten Projekt um.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-Dieser Ansatz kann mit beiden der oben genannten Verzeichnisstrukturen kombiniert werden.
-* Eine weitere kleine Variation der beiden Verzeichnisstrukturen wird in [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home) eingesetzt. In dieser liegen die Unit Tests zu einer Komponente direkt im Verzeichnis der jeweiligen Komponente. Werden Änderungen an einer Komponente vorgenommen, ist es auf diese Weise einfacher, ihre Tests zu finden. Gleichzeitig dienen die Tests als Dokumentation und zeigen Anwendungsfälle auf.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* Die Datei `app.js` enthält die Routendefinitionen, die Konfiguration und/oder das manuelle Bootstrapping (falls benötigt).
-* Jede JavaScript-Datei sollte nur eine einzige Komponente enthalten. Die Datei sollte nach dem Namen der Komponente benannt sein.
-* Verwende Angular-Projektstrukturvorlagen wie [Yeoman](http://yeoman.io) oder [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Ich bevorzuge die erste Struktur, weil bei ihr die üblichen Komponenten einfacher gefunden werden können.
-
-Konventionen über die Benennung der Komponenten stehen in jedem Abschnitt über die jeweilige Komponente.
-
-## Markup
-
-Auch die HTML-Markup ist wichtig und sollte in einem Team so geschrieben werden, als sei sie von derselben Person.
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Scripts sollten am Ende einer Seite eingefügt werden.
-
-```
-
-
-
-
- Meine App
-
-
-
-
-
-
-
-
-
-```
-
-Um den Code nicht unnötig zu verkomplizieren, füge AngularJS-spezifische Direktiven hinter Standard-Attributen ein. Dadurch ist es einfacher, sich den Code anzusehen und durch das Framework erweitertes HTML zu erkennen (was die Wartbarkeit verbessert).
-
-```
-
-```
-
-Andere HTML-Attribute sollten den [Empfehlungen](http://mdo.github.io/code-guide/#html-attribute-order) des Code Guides folgen.
-
-## Optimieren des Digest-Zyklus
-
-* Watche nur auf die vitalsten Variablen (Beispiel: Wenn du eine Echtzeitkommunikation einsetzt, sollte nicht bei jeder eingehenden Nachricht ein `$digest`-Loop ausgelöst werden).
-* Für Inhalte, die nur einmal initialisiert und anschließend nicht mehr geändert werden, sollten Einmal-Watcher wie [`bindonce`](https://github.com/Pasvaz/bindonce) verwendet werden.
-* Vereinfache Berechnungen in `$watch` so weit wie möglich. Komplexe und langsame Berechnungen in einem einzigen `$watch` verlangsamen die gesamte Applikation (der `$digest`-Loop wird in einem einzelnen Thread ausgeführt, weil JavaScript single-threaded ist).
-* Falls in der Callback-Funktion von `$timeout` keine gewatchten Variablen geändert werden, setze den dritten Parameter der `$timeout`-Funktion auf `false`, um nicht automatisch einen `$digest`-Zyklus durch den Aufruf des Callbacks auszulösen.
-
-## Sonstiges
-
-* Verwende:
- * `$timeout` statt `setTimeout`
- * `$interval` statt `setInterval`
- * `$window` statt `window`
- * `$document` statt `document`
- * `$http` statt `$.ajax`
-
-Dadurch werden deine Tests einfacher und in manchen Fällen wird einem unerwarteten Verhalten vorgebeugt (zum Beispiel wenn du ein `$scope.$apply()` in `setTimeout` vergessen hast).
-
-* Automatisiere deinen Workflow mit Tools wie:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Verwende Promises (`$q`) statt Callbacks. Dadurch sieht dein Code eleganter und sauberer aus und du wirst nicht in der Callback-Hölle landen.
-* Verwende, wenn möglich, `$resource` statt `$http`. Das höhere Abstraktionslevel schützt dich vor Redundanz.
-* Verwende einen Angular Pre-Minifier (wie [ngmin](https://github.com/btford/ngmin) oder [ng-annotate](https://github.com/olov/ng-annotate)), um Probleme nach einer Minification zu vermeiden.
-* Verwende keine Globalen. Löse alle Abhängigkeiten durch Dependency Injection auf.
-* Mülle deinen `$scope` nicht zu. Füge ihm nur Funktionen und Variablen hinzu, die in den Templates verwendet werden.
-* Bevorzuge [Controller gegenüber `ngInit`](https://github.com/angular/angular.js/pull/4366/files). `ngInit` eignet sich nur, um Aliase für spezielle Eigenschaften von `ngRepeat` zu erstellen. Hiervon abgesehen solltest du immer Controller statt `ngInit` verwenden, um Werte in einem Scope zu initialisieren.
-* Verwende kein `$` als Präfix für die Namen von Variablen, Eigenschaften oder Methoden. Dieser Präfix ist für AngularJS reserviert.
-
-# Module
-
-* Module sollten in lowerCamelCase benannt werden. Um deutlich zu machen, dass das Modul `b` ein Untermodul von `a` ist, kannst du sie durch Namespaces verschachteln, z. B.: `a.b`.
-
-Es gibt zwei verbreitete Wege, nach denen Module strukturiert werden können:
-
-0. Nach Funktionalität
-0. Nach Typ der Komponente
-
-Derzeit gibt es keinen großen Unterschied, aber die erste Variante sieht sauberer aus. Außerdem wird - wenn lazy-loading für die Module implementiert ist (momentan nicht auf der AngularJS-Roadmap) - die Performance der App verbessert.
-
-# Controller
-
-* Du solltest das DOM nicht aus deinen Controllern heraus manipulieren, dadurch wird das Testen der Controller erschwert und du verstößt gegen das [Prinzip der Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns). Verwende stattdessen Direktiven.
-* Controller sollen nach ihrer Funktion (zum Beispiel shopping cart, homepage, admin panel) und dem Suffix `Ctrl` benannt werden. Controller werden in UpperCamelCase benannt (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl` usw.).
-* Controller sollten nicht als Globale definiert werden (AngularJS erlaubt das zwar, es ist jedoch schlechte Praxis den globalen Namensraum zu verschmutzen).
-* Verwende für Controller-Definitionen die Array-Syntax:
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function(dependency1, dependency2, ..., dependencyn) {
- // body
-}]);
-```
-
-Durch die Verwendung dieses Definitionstyps werden Probleme bei der Minification vermieden. Die Array-Definition kann aus der Standardnotation automatisch generiert werden, indem Werkzeuge wie [ng-annotate](https://github.com/olov/ng-annotate) (und der Grunt-Task [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)) verwendet werden.
-* Verwende die Originalnamen der im Controller verwendeten Abhängigkeiten. Dies hilft dir dabei, lesbareren Code zu schreiben:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function(s) {
- // body
-}]);
-```
-
-ist schlechter lesbar als:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function($scope) {
- // body
-}]);
-```
-
-Das gilt insbesondere für Dateien, die so viel Code enthalten, dass gescrollt werden muss. Dadurch vergisst du möglicherweise, welche Variable zu welcher Abhängigkeit gehört.
-
-* Halte Controller so schlank wie möglich und lagere mehrfach verwendete Funktionen in Services aus.
-* Kommuniziere zwischen verschiedenen Controllern, indem du Method Invocation nutzt (das ist möglich, wenn ein Kindcontroller mit seinem Elterncontroller kommunizieren möchte) oder die `$emit`-, `$broadcast`- und `$on`-Methoden verwendest. Über `$emit` und `$broadcast` gesendete Nachrichten sollten auf ein Minimum reduziert werden.
-* Erstelle eine Liste aller Nachrichten, die über `$emit` und `$broadcast` verschickt werden. Pflege diese Liste, um Kollisionen und Bugs zu vermeiden.
-* Wenn du Daten formatieren musst, kapsle die Formatierungslogik in einem [Filter](#filter) und gebe diesen als Abhängigkeit an:
-
-```JavaScript
-module.filter('myFormat', function() {
- return function() {
- // body
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function($scope, myFormatFilter) {
- // body
-}]);
-```
-
-# Direktiven
-
-* Benenne deine Direktiven in lowerCamelCase.
-* Verwende `scope` statt `$scope` in deiner Link-Funktion. In den Compile- und Post-/Pre-Link-Funktionen hast du bereits Argumente angegeben, die verwendet werden sobald die Funktion aufgerufen wird. Diese kannst du nicht über eine Dependency Injection ändern. Dieser Stil wird auch im AngularJS-Sourcecode verwendet.
-* Verwende eigene Präfixe für deine Direktiven, um Namenskollisionen mit Bibliotheken von Drittanbietern zu vermeiden.
-* Die Präfixe `ng` und `ui` solltest du nicht verwenden, da diese für AngularJS und AngularUI reserviert sind.
-* DOM-Manipulationen dürfen ausschließlich über Direktiven vorgenommen werden.
-* Verwende einen Isolated Scope, wenn du wiederverwendbare Komponenten entwickelst.
-* Binde Direktiven über Attribute oder Elemente ein statt über Kommentare oder Klassen. Das macht deinen Code lesbarer.
-* Verwende zum Aufräumen `$scope.$on('$destroy', fn)`. Dies ist besonders nützlich wenn du Wrapper-Direktiven für Drittanbieter-Plug-ins entwickelst.
-* Vergiss nicht, `$sce` zu verwenden, wenn du mit Inhalten arbeitest, die nicht vertrauenswürdig sind.
-
-# Filter
-
-* Benenne deine Filter in lowerCamelCase.
-* Halte deine Filter so schlank wie möglich. Durch die `$digest`-Schleife werden sie häufig aufgerufen, so dass langsame Filter die gesamte Anwendung verlangsamen.
-* Mache nur eine einzige Sache in deinen Filtern, halte sie kohärent. Komplexere Manipulationen können erzielt werden, indem mehrere Filter gepiped werden.
-
-# Services
-
-Dieser Abschnitt enthält Informationen über AngularJS' Service-Komponente. Er bezieht sich nicht auf eine spezielle Definitionsweise (d. h. als Provider, Factory oder Service), falls nicht ausdrücklich genannt.
-
-* Benenne deine Services in camelCase.
- * UpperCamelCase (PascalCase), um Services zu benennen, die als Konstruktoren verwendet werden, d. h.:
-
-```JavaScript
-module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
-});
-
-module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
-});
-```
-
- * lowerCamelCase für alle anderen Services.
-* Kapsle die gesamte Anwendungslogik in Services.
-* Services, die eine bestimmte Domäne abbilden, sollten bevorzugt als `service` statt als `factory` geschrieben werden. Auf diese Weise können die Vorteile der klassischen Vererbung einfacher genutzt werden:
-
-```JavaScript
-function Human() {
- // body
-}
-Human.prototype.talk = function() {
- return "I'm talking";
-};
-
-function Developer() {
- // body
-}
-Developer.prototype = Object.create(Human.prototype);
-Developer.prototype.code = function() {
- return "I'm coding";
-};
-
-myModule.service('Human', Human);
-myModule.service('Developer', Developer);
-```
-
-* Für einen sitzungsbezogenen Cache kannst du `$cacheFactory` verwenden. Diesen solltest du nutzen, um die Ergebnisse von Anfragen oder aufwändigen Berechnungen zwischenzuspeichern.
-* Falls ein Service konfiguriert werden muss, definiere ihn als Provider und konfiguriere ihn im `config`-Callback, wie hier:
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-# Templates
-
-* Verwende `ng-bind` oder `ng-cloak` statt einfachen `{{ }}`, um flackernde Inhalte zu vermeiden.
-* Vermeide es, komplexe Ausdrücke in ein Template zu schreiben.
-* Wenn das `src`-Attribut eines Bilds dynamisch gesetzt werden soll, verwende `ng-src` statt `src` mit einem `{{ }}`-Template.
-* Wenn du das `href`-Attribut eines Ankers dynamisch setzen musst, verwende `ng-href` statt `href` mit einem `{{ }}`-Template.
-* Statt in Scopevariablen Strings anzugeben und diese mit `{{ }}` in ein `style`-Attribut zu schreiben, benutze die `ng-style`-Direktive, der als Parameter objektartige Strings und Scopevariablen übergeben werden können:
-
-```JavaScript
-$scope.divStyle = {
- width: 200,
- position: 'relative'
-};
-```
-```HTML
-
Mein wunderschön gestyltes div, das auch im IE funktioniert
;
-```
-
-# Routing
-
-* Verwende `resolve`, um Abhängigkeiten aufzulösen bevor die View angezeigt wird.
-
-#Testen
-
-TBD
-
-Du kannst [diese Anleitung](https://github.com/daniellmb/angular-test-patterns) verwenden, solange dieser Abschnitt noch nicht fertig ist.
-
-# Mitmachen
-
-Da dieser Style Guide gemeinschaftlich durch die Community erstellt werden soll, sind Beiträge willkommen.
-Zum Beispiel kannst du etwas beitragen, indem du den Abschnitt über Tests erweiterst oder den Style Guide in deine Sprache übersetzt.
-
-#Mitwirkende
-
-[](https://github.com/mgechev) |[](https://github.com/pascalockert) |[](https://github.com/mainyaa) |[](https://github.com/rubystream) |[](https://github.com/lukaszklis) |
-:---: |:---: |:---: |:---: |:---: |
-[mgechev](https://github.com/mgechev) |[pascalockert](https://github.com/pascalockert) |[mainyaa](https://github.com/mainyaa) |[rubystream](https://github.com/rubystream) |[lukaszklis](https://github.com/lukaszklis) |
-
-[](https://github.com/cironunes) |[](https://github.com/cavarzan) |[](https://github.com/tornad) |[](https://github.com/jmblog) |[](https://github.com/bargaorobalo) |
-:---: |:---: |:---: |:---: |:---: |
-[cironunes](https://github.com/cironunes) |[cavarzan](https://github.com/cavarzan) |[tornad](https://github.com/tornad) |[jmblog](https://github.com/jmblog) |[bargaorobalo](https://github.com/bargaorobalo) |
-
-[](https://github.com/astalker) |[](https://github.com/valgreens) |[](https://github.com/bitdeli-chef) |[](https://github.com/dchest) |[](https://github.com/gsamokovarov) |
-:---: |:---: |:---: |:---: |:---: |
-[astalker](https://github.com/astalker) |[valgreens](https://github.com/valgreens) |[bitdeli-chef](https://github.com/bitdeli-chef) |[dchest](https://github.com/dchest) |[gsamokovarov](https://github.com/gsamokovarov) |
-
-[](https://github.com/ntaoo) |[](https://github.com/hermankan) |[](https://github.com/jesselpalmer) |[](https://github.com/capaj) |[](https://github.com/jordanyee) |
-:---: |:---: |:---: |:---: |:---: |
-[ntaoo](https://github.com/ntaoo) |[hermankan](https://github.com/hermankan) |[jesselpalmer](https://github.com/jesselpalmer) |[capaj](https://github.com/capaj) |[jordanyee](https://github.com/jordanyee) |
-
-[](https://github.com/nacyot) |[](https://github.com/kirstein) |[](https://github.com/mo-gr) |[](https://github.com/cryptojuice) |[](https://github.com/olov) |
-:---: |:---: |:---: |:---: |:---: |
-[nacyot](https://github.com/nacyot) |[kirstein](https://github.com/kirstein) |[mo-gr](https://github.com/mo-gr) |[cryptojuice](https://github.com/cryptojuice) |[olov](https://github.com/olov) |
-
-[](https://github.com/vorktanamobay) |[](https://github.com/thomastuts) |[](https://github.com/grapswiz) |[](https://github.com/coderhaoxin) |[](https://github.com/dreame4) |
-:---: |:---: |:---: |:---: |:---: |
-[vorktanamobay](https://github.com/vorktanamobay) |[thomastuts](https://github.com/thomastuts) |[grapswiz](https://github.com/grapswiz) |[coderhaoxin](https://github.com/coderhaoxin) |[dreame4](https://github.com/dreame4) |
diff --git a/README-es-es.md b/README-es-es.md
deleted file mode 100644
index 4b02afe..0000000
--- a/README-es-es.md
+++ /dev/null
@@ -1,269 +0,0 @@
-#Introducción
-
-El objetivo de esta guía de estilo es presentar un conjunto de buenas prácticas y reglas de estilo para una aplicación de AngularJS.
-Estas buenas pácticas están recogidas de:
-
-0. Código fuente de AngularJS
-0. Código fuente de artículos que he leído
-0. Mi propia experiencia
-
-**Nota**: esto es un borrador de la guía de estilo, el principal objetivo es que lo dirija la comunidad, asi que será agradecido por la comunidad si se van añadiendo las cosas que faltan.
-
-En esta guía de estilo no encontrarás pautas comunes para el desarrollo en Javascript. Esas las podrás encontrar en:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-
-Para el desarrollo de AngularJS la recomendada es [Guía de estilo de Javascript de Google](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-En la wiki de Github de AngularJS hay una sección similar por [ProLoser](https://github.com/ProLoser), puedes verla [aquí](https://github.com/angular/angular.js/wiki).
-
-#Tabla de contenido
-* [General](#general)
- * [Estructura de directorios](#estructura-de-directorios)
- * [Optimiza el ciclo digest](#optimiza-el-ciclo-digest)
- * [Otros](#others)
-* [Módulos](#modulos)
-* [Controladores](#controladores)
-* [Directivas](#directivas)
-* [Filtros](#filtros)
-* [Servicios](#servicios)
-* [Plantillas](#plantillas)
-* [Enrutamiento](#enrutamiento)
-
-#General
-
-## Estructura de directorios
-
-Como una aplicación grande de AngularJS tiene muchos componentes, lo mejor es estructurarlos con una jerarquía de directorios.
-Principalmente hay dos maneras de hacerlo:
-
-* Creando una division de alto nivel por tipos de componentes y por funcionalidad a menor nivel.
-
-De esta manera la estructura de directorios sería así:
-
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── page1
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── page2
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── page1
- │ │ │ └── directive1.js
- │ │ └── page2
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── page1
- │ │ └── page2
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── lib
- └── test
-
-* Creando una division de alto nivel por funcionalidad y por tipos de componentes a bajo nivel.
-
-Esta es su estructura:
-
- .
- ├── app
- │ ├── app.js
- │ ├── common
- │ │ ├── controllers
- │ │ ├── directives
- │ │ ├── filters
- │ │ └── services
- │ ├── page1
- │ │ ├── controllers
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ ├── directives
- │ │ │ └── directive1.js
- │ │ ├── filters
- │ │ │ ├── filter1.js
- │ │ │ └── filter2.js
- │ │ └── services
- │ │ ├── service1.js
- │ │ └── service2.js
- │ └── page2
- │ ├── controllers
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ └── filter3.js
- │ └── services
- │ └── service3.js
- ├── lib
- └── test
-
-* Cuando se crean directivas puede resultar útil poner todos los archivos relacionados (plantillas, archivos CSS/SASS, Javascript) en el mismo directorio. Si eliges usar este método se consistente y úsalo en todo tu proyecto.
-
- app
- └── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-
-Este método se puede combinar con cualquiera de las dos estructuras de arriba.
-* Otra pequeña variación en ambas estructuras de directorios es la usada en [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). En ella los test unitarios para el componente se colocan en el lugar donde está el componente. De esta manera puedes realizar cambios en los componentes y es más fácil de encontrar sus tests. Los tests también se pueden usar como documentación y mostrar casos de uso.
-
- services
- ├── cache
- │ ├── cache1.js
- │ └── cache1.spec.js
- └── models
- ├── model1.js
- └── model1.spec.js
-
-* El archivo `app.js` contiene la definición de rutas, configuración y/o arranque manual (si es necesario).
-* Cada archivo Javascript debe contener un único componente. El archivo debería tener el mismo nombre que el componente.
-* Usa una plantilla para el proyecto de Angular como [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Yo prefiero la primera estructura porque es más fácil de encontrar los componentes comunes.
-
-La manera de nombrar a los componentes están en la sección de cada componente.
-
-## Optimiza el ciclo digest
-
-* Observa solo las variables más importantes (por ejemplo: cuando usas comunicación en tiempo real, no fuerces un ciclo `$digest` en cada mensaje recibido).
-* Las operaciones en`$watch` deben ser lo más simples posible. Realizar operaciones pesadas y lentas en un simple `$watch` puede ralentizar la aplicacion entera (el ciclo $digest se hace en un unico hilo debido al funcionamiento de Javascript con un único hilo de ejecución).
-
-## Otros
-
-* Usa:
- * `$timeout` en lugar de `setTimeout`
- * `$window` en lugar de `window`
- * `$document` en lugar de `document`
- * `$http` en lugar de `$.ajax`
-
-Esto hará que sea más fácil de testear y, en algunos casos, prevenir comportamientos extraños (por ejemplo, olvidar usar `$scope.$apply` en `setTimeout`).
-
-* Automatiza tu flujo de trabajo usando herramientas como:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Usa promesas (`$q`) en lugar de callbacks. Hará que tu código parezca más limpio y elegante y te salvará del infierno de callbacks anidadas.
-* Usa `$resource` en lugar de `$http` cuando puedas. Un nivel alto de abstracción evita la redundancia.
-* Usa un pre-minifier de AngularJS (como [ngmin](https://github.com/btford/ngmin) or [ng-annotate](https://github.com/olov/ng-annotate)) para prevenir problemas después de minificar.
-* No utilices variables globales. Solventa todas tus dependencias usando la inyección de dependencias.
-* No ensucies el `$scope`. Solamente añade funciones que van a ser usadas en las plantillas.
-
-#Modulos
-
-Hay dos maneras de estructurar los módulos:
-
-0. Por funcionalidad
-0. Por tipo de componente
-
-Actualmente no hay gran diferencia, pero la primera manera parece más limpia. También si se implementa la carga asíncrona de módulos (todavía no está en el roadmap de AngularJS), mejoraría el rendimiento de la aplicación.
-
-#Controladores
-
-* No modifiques el DOM desde tus controladores. Utiliza directivas para eso.
-* El nombre del controlador se basa en su funcionalidad (por ejemplo carrito de compra, página principal, panel de administración) y la subcadena `Ctrl` al final. Los controladores se nombran con UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, etc.).
-* Los controladores no se deben definir como variables globales (no importa que AngularJS lo permita, ensuciar el espacio global es una mala práctica).
-* Utiliza la sintaxis de arrays para definir controladores:
-
-
-
- module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
- }]);
-
-
-Usando este tipo de definición se evitan problemas con la minificación. Puedes generar automáticamente esta definición en vez de la estándar con herramientas como [ng-annotate](https://github.com/olov/ng-annotate) (y la tarea de grunt [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* Utiliza los nombres originales de las dependencias del controlador. Esto te permitirá escribir código más legible:
-
-
-
- module.controller('MyCtrl', ['$scope', function (s) {
- //...body
- }]);
-
-
-es menos fácil de leer que:
-
-
- module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
- }]);
-
-
-Esto se aplica especialmente en archivos en los que hay mucho código y tengas hacer scroll porque que olvides que variable hace referencia a cada dependencia.
-
-* Haz los controladores lo mas sencillos posibles. Abstrae las funciones comunes que uses en un servicio.
-* Comunica diferentes controladores usando la invocación de métodos (es posible cuando los controladores hijos quieren comunicarse con los controladores padre) o los métodos `$emit`, `$broadcast` y `$on`. La emisión y broadcast de mensajes debería hacerse lo menos posible.
-* Haz una lista de todos los mensajes que son mandados con `$emit`, `$broadcast` y manejalos con cuidado para evitar colisiones de nombres y posibles bugs.
-* Cuando necesites formatear datos encapsula la lógica en un [filtro](#filtros) y decláralo como dependencia:
-
-
- module.filter('myFormat', function () {
- return function () {
- //body...
- };
- });
-
- module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
- }]);
-
-#Directivas
-
-* Nombra tus directivas con lowerCamelCase.
-* Usa `scope` en lugar de `$scope` en tu funcion link. En el compilado, ya están definidos los argumentos de las funciones post/pre link cuando son invocadas, no los podrás cambiar después usando la inyección de dependencias. Este estilo es usado también en el código fuente de AngularJS.
-* Usa prefijos personalizados para las directivas para prevenir colisiones de nombres con librerías externas.
-* No uses los prefijos `ng` o `ui` porque están reservados para uso de AngularJS y AngularJS UI.
-* La manipulación del DOM solo se debe hacer mediante directivas.
-* Crea un scope aislado cuando desarrollas componentes reusables.
-
-#Filtros
-
-* Nombra tus filtros usando lowerCamelCase.
-* Haz tus filtros lo más ligeros posibles. Estos son llamados a menudo durante el ciclo `$digest` asi que un filtro lento puede hacer lenta tu aplicación.
-
-#Servicios
-
-* Utiliza camelCase (con mayúscula o minúscula) para darle nombre a tus servicios.
-* Encapsula la lógica de negocio en los servicios.
-* Los servicios que encapsulan la lógica de negocio son preferibles como `service` en lugar de `factory`
-* Para cachear a nivel de sesión puedes usar `$cacheFactory`. Se debería usar para cachear resultados de peticiones o procesos pesados.
-
-#Plantillas
-
-* Utiliza `ng-bind` o `ng-cloak` en lugar de `{{ }}` para prevenir mostrar contenido sin compilar.
-* Evita escribir código complejo en la plantilla.
-* Cuando necesites asignar el `src` de una imagen dinamicamente usa `ng-src` en lugar de `src` con `{{}}`.
-* En lugar de usar variables del scope como cadenas en el atributo `style` con `{{ }}`, usa la directiva `ng-style` con los parametros como claves de un objeto y las variables del scope como valores:
-
- ...
- $scope.divStyle = {
- width: 200,
- position: 'relative'
- };
- ...
-
-
my beautifully styled div which will work in IE
;
-
-#Enrutamiento
-
-* Usa `resolve` para resolver dependencias antes de que la vista se muestre.
diff --git a/README-fr-fr.md b/README-fr-fr.md
deleted file mode 100644
index 88e9c50..0000000
--- a/README-fr-fr.md
+++ /dev/null
@@ -1,441 +0,0 @@
-#Introduction
-
-Ce guide est la traduction francaise de [AngularJS style guide](https://github.com/mgechev/angularjs-style-guide).
-
-Le but de ce guide de style est d'exposer un ensemble de meilleures pratiques et directives de style pour une application AngularJS.
-Elles proviennent :
-
-0. du code source d'AngularJS
-0. du code source ou des articles que j'ai lus
-0. de ma propre expérience.
-
-**Note 1** : ce guide est encore à l'état d'ébauche. Son principal objectif est d'être développé par la communauté, donc combler les lacunes sera grandement apprécié par l'ensemble de la communauté.
-
-**Note 2** : avant de suivre certaines directives des traductions du document original en anglais, assurez-vous qu'elles sont à jour avec la [dernière version](https://github.com/mgechev/angularjs-style-guide/blob/master/README.md).
-
-Dans ce document, vous ne trouverez pas de directives générales concernant le développement en JavaScript. Vous pouvez les trouver dans les documents suivants :
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-
-Pour le développement d'AngularJS, le guide recommandé est [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Dans le wiki Github d'AngularJS, il y a une section similaire de [ProLoser](https://github.com/ProLoser), vous pouvez la consulter [ici](https://github.com/angular/angular.js/wiki).
-
-#Table des matières
-
-* [Général](#général)
- * [Arborescence](#arborescence)
- * [Balisage](#balisage)
- * [Optimiser le cycle de traitement](#optimiser-le-cycle-de-traitement)
- * [Autres](#autres)
-* [Modules](#modules)
-* [Contrôleurs](#contrôleurs)
-* [Directives](#directives)
-* [Filtres](#filtres)
-* [Services](#services)
-* [Gabarits](#gabarits)
-* [Routage](#routage)
-* [Tests](#tests)
-* [Contribution](#contribution)
-
-#Général
-
-## Arborescence
-
-Étant donné qu'une grosse application AngularJS a beaucoup de composants, il est préférable de la structurer en une hiérarchie de répertoires.
-Il existe deux approches principales :
-
-* Créer une division de haut niveau par types de composants et une division inférieure par fonctionnalité. De cette façon, la structure de répertoires ressemblera à
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── home
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── about
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── home
-│ │ │ └── directive1.js
-│ │ └── about
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── home
-│ │ └── about
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-* Créer une division de haut niveau par fonctionnalité et de niveau inférieur par type de composants. Voici son schéma :
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── home
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── about
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-* Lors de la création des directives, il peut être pratique de mettre tous les fichiers associés à une directive (gabarits, CSS / fichiers SASS, JavaScript) dans un seul dossier. Si vous choisissez d'utiliser ce style d'arborescence, soyez cohérent et utilisez-le partout dans votre projet.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-Cette approche peut être combinée avec les deux structures de répertoires ci-dessus.
-
-* Une dernière petite variation des deux structures de répertoires est celle utilisée dans [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). Dans celle-ci, les tests unitaires pour un composant donné sont dans le même dossier que le composant. De cette façon, quand vous modifiez un composant donné, il est facile de trouver ses tests. Les tests tiennent aussi lieu de documentation et montrent des cas d'usage.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* Le fichier `app.js` contient la définition des routes, la configuration et/ou l'amorçage manuel (si nécessaire).
-* Chaque fichier JavaScript ne devrait contenir qu'un seul composant. Le fichier doit être nommé avec le nom du composant.
-* Utilisez un modèle de structure de projet pour Angular comme [Yeoman](http://yeoman.io) ou [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Je préfère la première structure, car il rend les composants communs plus faciles à trouver.
-
-Les conventions sur le nommage des composants peuvent être trouvées dans la section de chaque composant.
-
-## Balisage
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Placer les scripts tout en bas.
-
-```
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-Garder les choses simples et mettre les directives spécifiques d'AngularJS en dernier. De cette façon, il est facile de vérifier le code et trouver les améliorations dans le HTML apportées par le framework (ce qui profite à la maintenabilité).
-
-```
-
-```
-
-Les autres attributs HTML devraient suivre les recommandations du [Code Guide](http://mdo.github.io/code-guide/#html-attribute-order) de Mark Otto.
-
-## Optimiser le cycle de traitement
-
-* Surveiller seulement les variables les plus importantes (par exemple, lors de l'utilisation de communication en temps réel, ne pas provoquer une boucle `$digest` dans chaque message reçu).
-* Pour un contenu initialisé une seule fois et qui ensuite ne change pas, utiliser des observateurs à évaluation unique comme [bindonce](https://github.com/Pasvaz/bindonce).
-* Faire les calculs dans `$watch` aussi simples que possible. Faire des calculs lourds et lents dans un unique `$watch` va ralentir l'ensemble de l'application (la boucle `$digest` s'exécute dans un seul thread en raison de la nature mono-thread de JavaScript).
-* Mettre le troisième paramètre de la fonction `$timeout` à false pour éviter la boucle `$digest` lorsqu'aucune des variables observées n'est impactée par la fonction de rappel `$timeout`.
-
-## Autres
-
-* Utilisation:
- * `$timeout` au lieu de `setTimeout`
- * `$window` au lieu de `window`
- * `$document` au lieu de `document`
- * `$http` au lieu de `$.ajax`
-
-Cela rendra vos tests plus facile et, dans certains cas, évitera les comportements inattendus (par exemple, si vous avez oublié `$scope.$apply` dans `setTimeout`).
-
-* Automatisez votre flux de travail en utilisant des outils comme:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
- * [Component](http://component.io)
-
-* Utilisez des promises (`$q`) au lieu de rappels (callback). Il rendra votre code plus élégant, propre et simple à regarder, et vous sauvera de l'enfer des callbacks.
-* Utilisez `$resource` au lieu de `$http` quand cela est possible. Un niveau d'abstraction plus élevé vous permet d'économiser de la redondance.
-* Utilisez un pré-minifier AngularJS (comme [ngmin](https://github.com/btford/ngmin) ou [ng_annote](https://github.com/olov/ng-annotate)) pour la prévention des problèmes après minification.
-* Ne pas utiliser de globales. Résoudre toutes les dépendances en utilisant l'injection de dépendances.
-* Ne pas polluer votre portée `$scope`. Ajouter uniquement des fonctions et des variables qui sont utilisés dans les gabarits.
-* Préférer l'utilisation de contrôleurs au lieu de [`ngInit`](https://github.com/angular/angular.js/pull/4366/files). La seule utilisation appropriée de `ngInit` est pour initialiser des propriétés particulières de `ngRepeat`. Outre ce cas, vous devez utiliser les contrôleurs plutôt que `ngInit` pour initialiser les valeurs sur une portée.
-* Ne pas utiliser le prefixe `$` pour les noms de variables, les propriétés et les méthodes. Ce préfixe est réservé pour un usage de AngularJS.
-* Lors de la résolution des dépendances par le système DI d'AngularJS, trier les dépendances par leur type — les dépendances intégrées à AngularJS en premier, suivies des vôtres :
-
-```javascript
-module.factory('Service', function ($rootScope, $timeout, MyCustomDependency1, MyCustomDependency2) {
- return {
- //Something
- };
-});
-```
-
-#Modules
-
-* Les modules devraient être nommés en lowerCamelCase. Pour indiquer que le module `b` est un sous-module du module `a`, vous pouvez les imbriquer en utlisant un espace de noms tel que `a.b`.
-
-Les deux façons habituelles de structurer les modules sont :
-
-0. par fonctionnalité
-0. par type de composant.
-
-Actuellement, il n'y a pas une grande différence entre les deux mais la première semble plus propre. En outre, si le chargement paresseux des modules est implémenté (actuellement il ne figure pas sur la feuille de route d'AngularJS), il permettra d'améliorer les performances de l'application.
-
-#Contrôleurs
-
-* Ne manipulez pas le DOM dans vos contrôleurs. Cela rendrait vos contrôleurs plus difficiles à tester et violerait le [principe de séparation des préoccupations] (https://en.wikipedia.org/wiki/Separation_of_concerns). Utilisez plutôt les directives.
-* Le nom d'un contrôleur s'obtient à partir de sa fonction (par exemple panier, page d'accueil, panneau d'administration) suffixée par `Ctrl`. Les contrôleurs sont nommés en UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, etc.)
-* Les contrôleurs ne devraient pas être définis dans le contexte global (bien qu'AngularJS le permette, c'est une mauvaise pratique de polluer l'espace de noms global).
-* Définissez les contrôleurs à l'aide de tableaux :
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
-}]);
-```
-
-Une telle définition évite les problèmes avec la minification. Vous pouvez générer automatiquement la définition du tableau à l'aide d'outils comme [ng-annotate](https://github.com/olov/ng-annotate) (et la tâche grunt [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* Utilisez les noms d'origine des dépendances du contrôleur. Cela vous aidera à produire un code plus lisible :
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-```
-
-est moins lisible que
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-```
-
-Cela s'applique particulièrement à un fichier qui a tellement de lignes de code que vous devrez les faire défiler. Cela pourrait vous faire oublier quelle variable est liée à quelle dépendance.
-
-* Faites les contrôleurs aussi simples que possible. Extrayez les fonctions couramment utilisées dans un service.
-* Communiquez entre les différents contrôleurs en utilisant l'appel de méthode (possible lorsqu'un enfant veut communiquer avec son parent) ou `$emit`, `$broadcast` et `$on`. Les messages émis et diffusés doivent être réduits au minimum.
-* Faites une liste de tous les messages qui sont passés en utilisant `$emit` et `$broadcast`, et gérez-la avec précaution à cause des conflits de nom et bugs éventuels.
-* Si vous devez formater les données alors encapsulez la logique de mise en forme dans un [filtre](#filtres) et déclarez-le comme dépendance :
-
-```JavaScript
-module.filter('myFormat', function () {
- return function () {
- //body...
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
-}]);
-```
-
-* Dans le cas de contrôleurs imbriqués utilisez les portées emboitées (avec `controllerAs`) :
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```
-
-```
-
-#Directives
-
-* Nommez vos directives en lowerCamelCase
-* Utilisez `scope` au lieu de `$scope` dans votre fonction de lien. Dans la compilation, les fonctions de liaison pré/post compilation, vous avez déjà les arguments qui sont passés lorsque la fonction est appelée, vous ne serez pas en mesure de les modifier à l'aide de DI. Ce style est également utilisé dans le code source d'AngularJS.
-* Utilisez les préfixes personnalisés pour vos directives pour éviter les collisions de noms de bibliothèques tierces.
-* Ne pas utiliser `ng` ou `ui` comme préfixe car ils sont réservés pour AngularJS et l'utilisation d'AngularJS UI.
-* Les manipulations du DOM doivent être effectués uniquement avec des directives.
-* Créer un scope isolé lorsque vous développez des composants réutilisables.
-* Utilisez des directives comme des attributs ou des éléments au lieu de commentaires ou de classes, cela va rendre le code plus lisible.
-* Utilisez `$scope.$on('$destroy, fn)` pour le nettoyage de vos objects/variables. Ceci est particulièrement utile lorsque vous utilisez des plugins tiers comme directives.
-* Ne pas oublier d'utiliser `$sce` lorsque vous devez faire face à un contenu non approuvé.
-
-#Filtres
-
-* Nommez vos filtres en lowerCamelCase.
-* Faites vos filtres aussi légers que possible. Ils sont souvent appelés lors de la boucle `$digest`, donc créer un filtre lent ralentira votre application.
-* Limitez vos filtres à une seule chose et gardez-les cohérents. Des manipulations plus complexes peuvent être obtenues en enchaînant des filtres existants.
-
-#Services
-
-La présente section contient des informations au sujet des composants service dans AngularJS. Sauf mention contraire, elles ne dépendent pas de la méthode utilisée pour définir les services (c.-à-d. `provider`, `factory`, `service`).
-
-* Nommez vos services en camelCase :
- * UpperCamelCase (PascalCase) pour vos services utilisés comme constructeurs, c.-à.-d. :
-
-```JavaScript
-module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
-});
-
-module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
-});
-```
-
- * lowerCamel pour tous les autres services.
-
-* Encapsulez la logique métier dans des services.
-* La méthode `service` est préférable à la méthode `factory`. De cette façon, nous pouvons profiter de l'héritage classique plus facilement :
-
-```JavaScript
-function Human() {
- //body
-}
-Human.prototype.talk = function () {
- return "I'm talking";
-};
-
-function Developer() {
- //body
-}
-Developer.prototype = Object.create(Human.prototype);
-Developer.prototype.code = function () {
- return "I'm codding";
-};
-
-myModule.service('Human', Human);
-myModule.service('Developer', Developer);
-
-```
-
-* Pour un cache de session, vous pouvez utiliser `$cacheFactory`. Il devrait être utilisé pour mettre en cache les résultats des requêtes ou des calculs lourds.
-* Si un service donné nécessite une configuration, définissez le service comme un provider et configurez-le ainsi dans la fonction de rappel `config` :
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-#Gabarits
-
-* Utilisez `ng-bind` ou `ng-cloak` au lieu de simples `{{ }}` pour prévenir les collisions de contenus
-* Eviter d'écrire du code complexe dans les gabarits
-* Quand vous avez besoin de définir le `src` d'une image dynamiquement, utilisez `ng-src` au lieu de `src` avec `{{}}` dans le gabarit. Ceci pour permettre un refresh dynamique ? (NLDT)
-* Au lieu d'utiliser la variable $scope en tant que chaîne et de l'utiliser avec l'atribut `style` et `{{}}`, utilisez la directive `ng-style` avec les paramètres de l'objet comme et les variables de scope comme valeurs:
-
-```HTML
-
-
-
my beautifully styled div which will work in IE
;
-```
-
-#Routage
-
-* Utilisez `resolve` pour résoudre les dépendances avant que la vue ne soit affichée.
-
-#Tests
-
-TBD
-
-#Contribution
-
-Puisque ce guide de style a pour but d'être un projet communautaire, les contributions sont très appréciées. Par exemple, vous pouvez contribuer en développant la section [Tests](#tests) ou en traduisant le guide dans votre langue.
-
-
diff --git a/README-id-id.md b/README-id-id.md
deleted file mode 100644
index 3212276..0000000
--- a/README-id-id.md
+++ /dev/null
@@ -1,477 +0,0 @@
-# Introduksi
-
-Tujuan dari panduan ini adalah memberikan standar gaya dan cara-cara terbaik menulis kode untuk sebuah aplikasi AngularJS.
-Cara-cara ini dikumpulkan dari:
-
-0. Kode sumber AngularJS
-0. Kode-kode atau artikel yang pernah saya baca
-0. Pengalaman saya sendiri
-
-**Catatan 1**: Panduan ini masih berupa konsep, tujuan utamanya adalah agar dikendalikan oleh komunitas, jadi menyumbangkan waktu anda untuk proyek ini akan sangat dihargai seluruh komunitas.
-
-**Catatan 2**: Sebelum mengikuti panduan ini, pastikan bahwa panduan ini versi yang terbaru atau sama dengan versi dalam bahasa inggris (bisa anda cek dari waktu commit).
-
-Dalam panduan ini, anda tidak akan menemukan panduan umum untuk menulis kode javascript. Seperti yang bisa anda temukan di:
-
-0. [Panduan menulis kode javascript milik Google](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Panduan menulis kode javascript milik Mozilla](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [Panduan menulis kode javascript milik GitHub](https://github.com/styleguide/javascript)
-0. [Panduan menulis kode javascript milik Douglas](http://javascript.crockford.com/code.html)
-0. [Panduan menulis kode javascript milik Airbnb](https://github.com/airbnb/javascript)
-
-Tapi setidaknya kami merekomendasikan anda untuk mengikuti [Panduan menulis kode javascript milik Google](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Di halaman GitHub milik AngularJS ada sebuah wiki yang bagus seputar topik ini, kontribusi dari [ProLoser](https://github.com/ProLoser), anda bisa melihatnya di [sini](https://github.com/angular/angular.js/wiki).
-
-# Daftar isi
-* [Umum](#umum)
- * [Struktur Direktori](#struktur-direktori)
- * [Markup](#markup)
- * [Optimasi "digest cycle"](#optimasi-digest-cycle)
- * [Lain Lain](#lain-lain)
-* [Modules](#modules)
-* [Controllers](#controllers)
-* [Directives](#directives)
-* [Filters](#filters)
-* [Services](#services)
-* [Templates](#templates)
-* [Routing](#routing)
-* [Testing](#testing)
-* [Kontribusi](#kontribusi)
-* [Kontributor](#kontributor)
-
-# Umum
-
-## Struktur Direktori
-
-Karena sebuah aplikasi bisa mempunyai banyak komponen, sangat baik untuk membuatnya terstruktur seperti struktur direktori.
-Ada 2 struktur yang biasa digunakan:
-
-**Struktur 1:** Membagi menjadi 2 divisi, divisi atas disusun berdasarkan komponen, divisi bawah berdasarkan fungsionalitas.
-
-Dengan cara ini, struktur akan terlihat seperti ini:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── home
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── about
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── home
-│ │ │ └── directive1.js
-│ │ └── about
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── home
-│ │ └── about
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-**Struktur 2:** Membagi menjadi 2 divisi, divisi atas disusun berdasarkan fungsionalitas, divisi bawah berdasarkan komponen.
-
-Dengan cara ini, struktur akan terlihat seperti ini:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── home
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── about
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-**Struktur tambahan:** Ketika membuat directives, akan sangat memudahkan apabila anda menempatkan semua file yang berhubungan (seperti: templates, CSS/SASS) di dalam direktori yang sama. Jika anda mengikuti cara ini, anda harus konsisten.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-Struktur tambahan ini bisa dikombinasikan dengan 2 struktur di atas.
-
-**Variasi Struktur:** Seperti yang digunakan di proyek [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). Di dalam proyek tersebut, setiap unit testing ditempatkan dalam 1 direktori yang sama dengan komponen. Dengan cara tersebut, anda akan menemukannya dengan cepat dan juga bisa digunakan untuk dokumentasi dan cara penggunaan komponen tersebut.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* File `app.js` berisi definisi routing dan konfigurasi.
-* Setiap file javascript, hanya boleh berisi sebuah komponen. File tersebut harus diberi nama sesuai nama komponen.
-* Alternatif lain, gunakan struktur seperti di [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Saya sendiri lebih menyukai struktur pertama, karena komponen lebih mudah dicari.
-
-Untuk Aturan standar penamaan komponen bisa ditemukan di panduan tiap bagian.
-
-## Markup
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Letakan semua script di bagian bawah halaman.
-
-```
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-Buat semuanya simpel dan susun file dari yang sangat umum hingga directive yang spesifik di bagian akhir. Dengan begitu lebih mudah untuk melihat, mencari dan mengubahnya.
-
-```
-
-```
-
-Untuk atribut HTML yang lain, ikuti panduan [ini](http://mdo.github.io/code-guide/#html-attribute-order)
-
-## Optimasi "digest cycle"
-
-* Hanya 'watch' variabel vital (seperti: ketika menggunakan komunikasi real-time, jangan gunakan `$digest` loop disetiap pesan yang diterima).
-* Untuk konten yang diinisialisasi sekali dan tidak pernah berubah lagi, gunakan 'single-time watchers' seperti [`bindonce`](https://github.com/Pasvaz/bindonce).
-* Buat komputasi di dalam `$watch` se-simpel mungkin. Karena komputasi berat atau lambat di sebuah `$watch` akan memperlambat seluruh aplikasimu.
-* Set false parameter ke 3 di `$timeout` untuk melewatkan `$digest` loop ketika tidak ada lagi variabel yang harus di 'watch'.
-
-## Lain Lain
-
-* Gunakan:
- * `$timeout` daripada `setTimeout`
- * `$interval` daripada `setInterval`
- * `$window` daripada `window`
- * `$document` daripada `document`
- * `$http` daripada `$.ajax`
-
-Ini akan mempermudah testing dan akan mencegah kejadian tidak terduga (seperti, jika anda melewatkan `$scope.$apply` di `setTimeout`).
-
-* Otomatiskan sistem kerja anda dengan tool bantuan seperti:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Gunakan promises (`$q`) daripada callbacks. Ini akan membuat kode anda lebih elegan dan bersih, dan menyelamatkan anda dari 'callback hell'.
-* Gunakan `$resource` daripada `$http` jika memungkinkan. Semakin tinggi level abstraksi, akan menyelamatkan anda dari redudansi.
-* Gunakan AngularJS pre-minifier (seperti [ngmin](https://github.com/btford/ngmin) atau [ng-annotate](https://github.com/olov/ng-annotate)) untuk mencegah masalah setelah proses minifikasi.
-* Jangan gunakan variabel global. Selalu gunakan Dependency Injection.
-* Jangan kotori `$scope`. Hanya tambahkan fungsi dan variabel yang benar-benar akan digunakan.
-* Lebih baik inisialisasi variabel di [controllers daripada menggunakan `ngInit`](https://github.com/angular/angular.js/pull/4366/files). Hanya gunakan `ngInit` untuk aliasing di `ngRepeat`.
-* Jangan gunakan awalan `$` untuk nama variabel, properti dan fungsi. Awalan ini digunakan oleh AngularJS.
-* Ketika melakukan Depedency Injection, susun semuanya dimulai dari library AngularJS terlebih dahulu, setelah itu library kustom anda:
-
-```javascript
-module.factory('Service', function ($rootScope, $timeout, MyCustomDependency1, MyCustomDependency2) {
- return {
- //Something
- };
-});
-```
-
-# Modules
-
-* Modules harus diberi nama dengan standar 'lowerCamelCase'. Apabila module `b` adalah submodule dari module `a`, maka anda bisa menumpuknya dengan namespace seperti: `a.b`.
-
-Ada 2 struktur umum untuk modul:
-
-0. Dari fungsionalitas
-0. Dari tipe komponen
-
-Saat ini 2 struktur di atas tidak terlalu berbeda, tapi yang pertama lebih terlihat bersih. Namun, apabila module 'lazy-loading' sudah diimplementasikan (walaupun saat ini module tersebut tidak ada dalam roadmap tim AngularJS), struktur pertama dapat menambah performa aplikasi anda.
-
-# Controllers
-
-* Jangan memanipulasi DOM dari controller, akan membuat controller anda sulit di tes dan melawan prinsip [Separation of Concerns](https://en.wikipedia.org/wiki/Separation_of_concerns). Lebih baik gunakan directive.
-* Untuk penamaan controller gunakan standar 'UpperCamelCase' dan harus sesuai dengan fungsionalitasnya (seperti: shopping cart, homepage, admin panel) dan diakhiri dengan `Ctrl` (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, dll.).
-* Controller tidak boleh didefinisikan secara global (meskipun AngularJS mengijinkan hal ini, namun sangatlah tidak baik mengotori namespace global).
-* Gunakan syntax array untuk definisi controller:
-
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyN', function (dependency1, dependency2, ..., dependencyN) {
- //...body
-}]);
-```
-
-
-Gunakan cara definisi seperti ini untuk menghindarkan masalah minifikasi. Anda dapat secara otomatis menghasilkan definisi seperti di atas dengan menggunakan tool seperti [ng-annotate](https://github.com/olov/ng-annotate) (dan grunt task [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* Gunakan nama asli dari Dependency Injection, ini akan memudahkanmu membaca kode:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-```
-
-Akan lebih susah dimengerti daripada:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-```
-
-Hal ini akan sangat berguna ketika file yang anda baca cukup panjang.
-
-* Buat controller sesimpel mungkin dan abstraksikan semua logika bisnis ke dalam service.
-* Komunikasi dengan controller yang berbeda menggunakan method invocation (memungkinkan ketika child controller ingin berkomunikasi dengan parent controller) atau `$emit`, `$broadcast` dan `$on`. Pesan yang disebarkan harus seminimum mungkin.
-* Buatlah daftar semua pesan yang digunakan `$emit`, `$broadcast` dan atur secara hati-hati untuk menghindari nama yang sama.
-* Ketika anda ingin mengubah format tampilan data, gunakan [filter](#filters):
-
-```JavaScript
-module.filter('myFormat', function () {
- return function () {
- //body...
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
-}]);
-```
-* Untuk controller yang bertumpuk, gunakan "nested scoping" dengan `controllerAs`:
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```
-
-```
-
-# Directives
-
-* Gunakan standar penamaan 'lowerCamelCase'.
-* Gunakan `scope` daripada `$scope` di dalam link function. Pada saat proses kompilasi, post/pre link function yang telah didefinisikan dengan argumen, akan diberikan ketika fungsi tersebut dipanggil, anda tidak akan dapat mengubahnya dengan Dependency Injection. Cara ini juga digunakan di kode sumber AngularJS.
-* Gunakan awalan yang berbeda untuk directive, untuk mencegah error karena penggunaan nama yang sama dengan third-party library.
-* Jangan gunakan awalan `ng` atau `ui` karena telah digunakan untuk AngularJS dan AngularJS UI.
-* Manipulasi DOM hanya dilakukan di dalam directive.
-* Usahakan scope harus terisolasi ketika membuat komponen yang bisa digunakan kembali.
-* Gunakan directive di atribut atau elemen daripada di komentar atau class, ini akan membuat kode lebih mudah dibaca.
-* Gunakan `$scope.$on('$destroy', fn)` untuk membersihkan. Sangat berguna terutama ketika anda menggunakan third-party plugin sebagai directive.
-* Jangan lupa gunakan `$sce` untuk konten yang tidak dapat dipercaya.
-
-# Filters
-
-* Gunakan standar penamaan 'lowerCamelCase'.
-* Buat filter anda se-ringan mungkin karena sering dipanggil selama `$digest` loop.
-* Fokus lakukan 1 hal saja untuk setiap filter. Untuk manipulasi lebih kompleks, lebih baik menggabungkan beberapa filter sekaligus.
-
-# Services
-
-Bagian ini adalah informasi tentang komponen service secara umum di AngularJS dan tidak spesifik tentang (`provider`, `.factory` atau `.service`), kecuali ditegaskan demikian.
-
-* Gunakan standar penamaan 'camelCase'.
- * UpperCamelCase (PascalCase) untuk nama service apabila digunakan sebagai konstruktor, seperti:
-
- ```JavaScript
- module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
- });
-
- module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
- });
- ```
-
- * lowerCamelCase untuk semua service yang lain.
-
-* Enkapsulasikan semua logika bisnis di dalam service.
-* Service yang merepresentasikan domain lebih baik adalah `service` daripada `factory`. Dengan begitu kita dapat lebih mudah mendapatkan keuntungan dari "klassical" inheritance:
-
-```JavaScript
-function Human() {
- //body
-}
-Human.prototype.talk = function () {
- return "I'm talking";
-};
-
-function Developer() {
- //body
-}
-Developer.prototype = Object.create(Human.prototype);
-Developer.prototype.code = function () {
- return "I'm coding";
-};
-
-myModule.service('Human', Human);
-myModule.service('Developer', Developer);
-
-```
-
-* Untuk cache pada level session gunakan `$cacheFactory`. Ini harus digunakan untuk meng-cache hasil dari request atau komputasi yang berat.
-* Jika sebuah service membutuhkan konfigurasi, maka definisikan service tersebut sebagai provider dan konfigurasikan service itu di dalam `config` callback seperti:
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-# Templates
-
-* Gunakan `ng-bind` atau `ng-cloak` daripada `{{ }}` untuk mencegah konten yang berkedip (flashing content).
-* Hindari menulis ekspresi yang kompleks di dalam template.
-* Gunakan `ng-src` dan `{{ }}` daripada hanya `src`
-* Gunakan `ng-href` daripada `src` dan `{{ }}`
-* Gunakan `ng-style` daripada `style` dan `{{ }}`
-
-```HTML
-
-
-
my beautifully styled div which will work in IE
;
-```
-
-# Routing
-
-* Gunakan `resolve` untuk resolve dependencies sebelum view ditampilkan.
-
-# Testing
-
-TBD
-
-Sampai bagian ini selesai, anda bisa menggunakan panduan [ini](https://github.com/daniellmb/angular-test-patterns) terlebih dahulu.
-
-# Kontribusi
-
-Karena panduan ini dibuat oleh komunitas, kontribusi sangatlah dihargai.
-Contohnya, anda dapat berkontribusi dengan memperluas bagian testing atau dengan menerjemahkan panduan ini ke dalam bahasa anda.
-
-# Kontributor
-
-[](https://github.com/mgechev) |[](https://github.com/pascalockert) |[](https://github.com/mainyaa) |[](https://github.com/rubystream) |[](https://github.com/lukaszklis) |
-:---: |:---: |:---: |:---: |:---: |
-[mgechev](https://github.com/mgechev) |[pascalockert](https://github.com/pascalockert) |[mainyaa](https://github.com/mainyaa) |[rubystream](https://github.com/rubystream) |[lukaszklis](https://github.com/lukaszklis) |
-
-[](https://github.com/cironunes) |[](https://github.com/cavarzan) |[](https://github.com/tornad) |[](https://github.com/jmblog) |[](https://github.com/bargaorobalo) |
-:---: |:---: |:---: |:---: |:---: |
-[cironunes](https://github.com/cironunes) |[cavarzan](https://github.com/cavarzan) |[tornad](https://github.com/tornad) |[jmblog](https://github.com/jmblog) |[bargaorobalo](https://github.com/bargaorobalo) |
-
-[](https://github.com/astalker) |[](https://github.com/valgreens) |[](https://github.com/bitdeli-chef) |[](https://github.com/dchest) |[](https://github.com/gsamokovarov) |
-:---: |:---: |:---: |:---: |:---: |
-[astalker](https://github.com/astalker) |[valgreens](https://github.com/valgreens) |[bitdeli-chef](https://github.com/bitdeli-chef) |[dchest](https://github.com/dchest) |[gsamokovarov](https://github.com/gsamokovarov) |
-
-[](https://github.com/ntaoo) |[](https://github.com/hermankan) |[](https://github.com/jesselpalmer) |[](https://github.com/capaj) |[](https://github.com/jordanyee) |
-:---: |:---: |:---: |:---: |:---: |
-[ntaoo](https://github.com/ntaoo) |[hermankan](https://github.com/hermankan) |[jesselpalmer](https://github.com/jesselpalmer) |[capaj](https://github.com/capaj) |[jordanyee](https://github.com/jordanyee) |
-
-[](https://github.com/nacyot) |[](https://github.com/kirstein) |[](https://github.com/mo-gr) |[](https://github.com/cryptojuice) |[](https://github.com/olov) |
-:---: |:---: |:---: |:---: |:---: |
-[nacyot](https://github.com/nacyot) |[kirstein](https://github.com/kirstein) |[mo-gr](https://github.com/mo-gr) |[cryptojuice](https://github.com/cryptojuice) |[olov](https://github.com/olov) |
-
-[](https://github.com/vorktanamobay) |[](https://github.com/thomastuts) |[](https://github.com/grapswiz) |[](https://github.com/coderhaoxin) |[](https://github.com/dreame4) |
-:---: |:---: |:---: |:---: |:---: |
-[vorktanamobay](https://github.com/vorktanamobay) |[thomastuts](https://github.com/thomastuts) |[grapswiz](https://github.com/grapswiz) |[coderhaoxin](https://github.com/coderhaoxin) |[dreame4](https://github.com/dreame4) |
-
-[](https://github.com/guiltry) |
-:---: |
-[guiltry](https://github.com/guiltry) |
diff --git a/README-it-it.md b/README-it-it.md
deleted file mode 100644
index 8aa14eb..0000000
--- a/README-it-it.md
+++ /dev/null
@@ -1,554 +0,0 @@
-# Introduzione
-
-Questo documento è finalizzato al presentare una serie di buone pratiche e
-linee guida per lo stile e l'applicazione di AngularJS.
-Queste pratiche derivano da:
-
-0. Codice AngularJS
-0. Codice e articoli che ho letto
-0. Esperienza
-
-**Nota 1**: Questo è ancora un abbozzo della guida stilistica: il suo obiettivo
-è di essere guidato dalla community, quindi eventuali migliorie sarebbero
-molto apprezzate da parte di tutti.
-
-In questa guida non si accennerà a comuni linee guida sulla programmazione
-JavaScript. Queste possono essere trovate nei seguenti link:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-0. [Airbnb JavaScript style guide](https://github.com/airbnb/javascript)
-
-Per la programmazione AngularJS è raccomandato: [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Nel repository AngularJS su GitHub c'è una sezione simile curata da [ProLoser](https://github.com/ProLoser). Potete visionarla [quì](https://github.com/angular/angular.js/wiki).
-
-# Contenuti
-* [Generale](#general)
- * [Struttura delle directory](#directory-structure)
- * [Markup](#markup)
- * [Ottimizzare il ciclo digest](#optimize-the-digest-cycle)
- * [Altro](#others)
-* [Module](#modules)
-* [Controller](#controllers)
-* [Directive](#directives)
-* [Filter](#filters)
-* [Service](#services)
-* [Template](#templates)
-* [Routing](#routing)
-* [Testing](#testing)
-* [Collaborazioni](#contribution)
-* [Collaboratori](#contributors)
-
-# Generale
-
-## Struttura delle directory
-
-Dal momento che una grande applicazione di AngularJS implica tante componenti,
-sarebbe consigliabile strutturare i file e le directory in maniera gerarchica.
-Ci sono due possibili approcci:
-
-* Creare una divisione ad alto livello in base al tipo di componenti ed una a
-basso livello in base alle funzionalità
-
-In questo modo le directory avranno questa struttura:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── home
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── about
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── home
-│ │ │ └── directive1.js
-│ │ └── about
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── home
-│ │ └── about
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-* Creare una divisione ad alto livello in base alle funzionalità ed una a basso
-livello in base al tipo di componenti
-
-Questa divisione avrà invece questo tipo di struttura:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── home
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── about
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-* Quando si creano le directive sarebbe utile mettere tutti i file associati
-ad una data directive (es: template, CSS/SASS file,
-JavaScript) in una singola cartella. Se scegliete di usare questo stile, siate
-coerenti e usatelo in ogni occasione.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-Questo approccio può essere combinato con entrambe le strutture di directory
-trattate in precedenza
-* Un'ulteriore leggera variazione di entrambe le strutture è quella usata in
-[ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). In
-questa, le unit tests per un determinato componente sono poste nella stessa
-cartella del componente stesso. In questo modo quando vengono fatti cambiamenti
-ad un componente è più semplice trovare il relativo test. Il test, in questo
-modo, fa anche da documentazione e mostra i casi d'uso.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* Il file `app-js` contiene la definizione dei route, impostazioni e/o
-bootstrap manuali (se richiesti).
-* Ogni file JavaScript dovrebbe contenere solo un singolo componente. Il file
-dovrebbe essere chiamato con il nome del componente.
-* Per il progetto AngularJS, usate una struttura di template simile alla
-seguente:
-* The `app.js` file contains route definitions, configuration and/or manual bootstrap (if required). [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Personalmente preferisco la prima struttura perché rende più facili da trovare
-i componenti più comuni.
-
-Convenzioni su come chiamare i componenti possono essere trovate nelle sezioni
-relative agli stessi.
-
-## Markup
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Metti lo script in basso.
-
-```
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-Mantieni il codice semplice e metti le direttive AngularJS in fondo. In questo
-modo è più semplice la lettura e la mantenibilità del codice HTML.
-
-```
-
-```
-
-Gli altri attrubuti HTML dovrebbero seguire la seguente [guida](http://mdo.github.io/code-guide/#html-attribute-order)
-
-## Ottimizzare il ciclo digest
-
-* Eseguire un watch solo per le variabili più importanti (es: usando un tipo di
-comunicazione real-time, non permettere un ciclo `$digest` per ogni messaggio
-ricevuto).
-* Per contenuti che sono inizializzati solo una volta e mai cambiati, usare un
-single-time watcher come [`bindonce`](https://github.com/Pasvaz/bindonce).
-* Rendere le computazioni in `$watch` il più semplici possibile. Rendendo
-pesanti e lenti i calcoli in un singolo `$watch`, si abbasseranno le
-prestazioni dell'intera applicazione (il ciclo `$digest` è eseguito in un
-singolo thread a causa della natura single-threaded di JavaScript).
-* Settare il ternzo parametro nella funzione `$timeout` a false, per evitare
-un ulteriore ciclo `$digest` quando variabili non necessarie sono implicate
-nella funzione callback di `$timeout`.
-
-## Altro
-
-* Usare:
- * `$timeout` invece di `setTimeout`
- * `$interval` invece di `setInterval`
- * `$window` invece di `window`
- * `$document` invece di `document`
- * `$http` invece di `$.ajax`
-
-Questo renderà il testing più semplice e, in alcuni casi, impedirà
-comportamenti inaspettati (come il dimenticarsi `$scope.$apply` in
-`setTimeout`).
-
-* Automatizzare il lavoro usando utility come:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Usare promise (`$q`) invece dei callback. Questo renderà il codice più
-elegante e pulito, oltre che salvarvi dall'inferno dei callback.
-* Usare `$resource` invece di `$http`. Il più alto livello d'astrazione vi
-salverà dalle ridondanze.
-* Usare un pre-minificatore per AngularJS (ad esempio
-[ngmin](https://github.com/btford/ngmin) o
-[ng-annotate](https://github.com/olov/ng-annotate)) per evitare problemi dopo
-la minificazione.
-* Non usare variabili globali. Risolvere tutte le dipendenze usando il
-Dipendency Injection.
-* Non riempire lo `$scope` se non con variabili e funzioni usate nel template.
-* E' da preferire l'utilizzo di
-[controller invece di `ngInit`](https://github.com/angular/angular.js/pull/4366/files).
-Il solo utilizzo appropriato di `ngInit` è per rinominare particolari proprietà
-di `ngRepeat`. A parte quest'ultimo caso, si dovrebbero usare controller per
-inizializzare variabili nello scope.
-* Non usare il prefisso `$` per i nomi di variabili, proprietà o metodi. Questo
-prefisso è riservato ad AngularJS.
-* Quando si risolvono dipendenze attraverso il meccanismo DI di AngularJS,
-ordinare tutte le dipendenze in base al loro tipo - le dipendenze built-in di
-AngularJS dovrebbero essere le prime, seguite da quelle create da voi:
-
-```javascript
-module.factory('Service', function ($rootScope, $timeout, MyCustomDependency1, MyCustomDependency2) {
- return {
- //Something
- };
-});
-```
-
-# Module
-
-* Il nome dei module dovrebbe essere assegnato secondo il lowerCamelCase. Per
-indicare che un module `b` è submodule di `a` si possono concatenare usando un
-namespacing come: `a.b`.
-
-Ci sono due metodi più comuni per strutturare i modulo:
-
-0. In base alla funzionalità
-0. In base al tipo di componente
-
-Al momento non c'è grande differenza, ma il primo metodo sembra più pulito.
-Inoltre, se verrà implementato il lazy-loading modules (il che non è tra i
-piani di AngularJS), le prestazioni delle app aumenteranno.
-
-# Controller
-
-* Non manipolare il DOM nei controller: questo renderà i controller difficili
-da testare e violerà il
-[principio di separazione degli interessi](https://en.wikipedia.org/wiki/Separation_of_concerns).
-Usare, invece, le directive.
-* Il nome dei controller è assegnato in base alla loro funzionalità (ad esempio
-shopping cart, homepage, admin panel) più il suffisso 'Ctrl'. I nomi utilizzano
-in questo caso l'UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`,
-`AdminPanelCtrl`, ecc.).
-* I controller non dovrebbero mai essere definiti come globali (anche se
-AngularJS lo permette, inquinare il namspace globale è una brutta partica).
-* Usare la sintassi ad array per la definizione dei controller:
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
-}]);
-```
-
-Usando questo tipo di definizione si evitano problemi con la minificazione.
-So possono generare definizioni ad array da quelle standard utilizzando tool
-come [ng-annotate](https://github.com/olov/ng-annotate)
-o le task di grunt [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)
-Usare il nome originale delle dipendenze dei controller. Questo vi aiuterà nel
-produrre un codice più leggibile:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-```
-
-è più leggibile di:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-```
-
-Questo principio si applica soprattutto quando i file sono così grandi da aver
-bisogno di scrollare la pagina. Questo farebbe dimenticare facilmente al
-lettore quale variabile è legata a quale dipendenza.
-
-* Rendere i controller il più leggeri possibile. Astrarre le funzioni comuni in
-service.
-* Comunicare all'interno dei controller invocando metodi (possibile quando un
-figlio vuole comunicare con il genitore) o con i metodi `$emit`, `$broadcast`
-e `$on`. I messaggi emessi e trasmessi dovrebbero ridursi al minimo.
-* Creare una lista di tutti i messaggi che sono passati usando `$emit` e
-`$broadcast` e manovrarli con attenzione per evitare collisioni di nomi ed bug.
-* Quando si ha bisogno di formattare dati, incapsulare la logica di
-formattazione in un [filter](#filters) e dichiararlo come dipendenza:
-
-```JavaScript
-module.filter('myFormat', function () {
- return function () {
- //body...
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
-}]);
-```
-* In caso di controller annidati, usare "nested scoping" (la sintassi
-`controllerAs`):
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```
-
-```
-
-# Directive
-
-* Assegnare i nomi alle directive seguendo il lowerCamelCase
-* Usare `scope` invece di `$scope` alle funzioni link. Per le funzioni compile
-e post/pre link, avrete già definito i parametri che verranno passati quando la
-funzione verrà invocata e non vi sarà possibile cambiarli usando il DI. Questo
-stile è utilizzato anche nel codice di AngularJS
-* Usare prefissi personalizzati per le direttive per evitare collisioni con
-librerie di terze parti.
-* Non usare i prefissi `ng` e `ui`, poichè sono già utilizzati da AngularJS e
-AngularJS UI.
-* La manipolazione del DOM deve essere effettuata solo attraverso le directive.
-* Creare scope isolati quando si creano directiv riusabili.
-* Usare direttive come attributi o elementi invece di commenti o classi: questo
-renderà il codice più leggibile.
-* Usare `$scope.$on('$destroy', fn)` per pulire. Questo è molto utile
-specialmente quando si fa il wrapping di plugin e directive di terze parti.
-* Non dimenticare di usare `$sce` quando si ha a che fare con contenuti non
-affidabili
-
-# Filter
-
-Questa sezione include informazioni sui componenti service di AngularJS. Questi
-non dipendono dal tipo di definizione (es: come provider, `.factory`,
-`.service`) a meno che questo non è esplicitamente menzionato.
-
-* Usare camelCase per assegnare nomi ai service:
- * UpperCamelCase (PascalCase) per service usati come costruttori. Es:
-
- ```JavaScript
- module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
- });
-
- module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
- });
- ```
-
- * lowerCamelCase per gli altri casi.
-
-* Incapsulare tutte le logiche di business in service.
-* Service che rappresentano domini dovrebbero essere definiti come `service`
-piuttosto che `factory`. In questo modo ci si può avvantagiare dell'
-ereditarietà "klassical" in modo più semplice:
-
-```JavaScript
-function Human() {
- //body
-}
-Human.prototype.talk = function () {
- return "I'm talking";
-};
-
-function Developer() {
- //body
-}
-Developer.prototype = Object.create(Human.prototype);
-Developer.prototype.code = function () {
- return "I'm coding";
-};
-
-myModule.service('Human', Human);
-myModule.service('Developer', Developer);
-
-```
-
-* Per cache di session-level si può usare `$cacheFactory`. Questo dovrebbe
-essere usato come risultato cache di richieste o pesanti calcoli.
-* Se un dato service richiede una configurazione, definirlo come provider e
-configurarlo nel callback di `config`:
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-# Template
-
-* Usare `ng-bind` o `ng-cloak` invece di `{{ }}` per evitare il flashing
-content.
-* Evitare di scrivere espressioni complesse nei template.
-* Quando si ha bisogno di settare `src` ad un'immagine in modo dimamico, usare
-`ng-src` invece di `src` con `{{ }}`.
-* Quando si ha bisogno di settare `href` ad un tag dimaicamente, usare
-`ng-href` invece di `href` con `{{ }}`.
-* Invece di usare variabili di scope come stringa e usarli nell'attributo
-`style` racchiusi da `{{ }}`, utilizzare la directive `ng-style` con parametri
-oggetti e variabili dello scope come valori:
-
-```HTML
-
-
-
;
-```
-
-# ルーティング
-
-* ビューが表示される前に、 `resolve` を使って依存関係の解決をしましょう。
-* `resolve` コールバックの中に明示的なRESTfulの呼び出しはしないようにしましょう。全てのリクエストは適切なサービスに隠蔽します。この方法でキャッシュを使うことができますし、関心の分離の原則に則ることができます。
-
-# i18n
-
-* バージョン1.4.0以降でビルトインのi18nツールを利用することができます。1.4.0より前のバージョンを利用している場合は、[`angular-translate`](https://github.com/angular-translate/angular-translate)を利用することができます。
-
-# コントリビューション
-
-このスタイルガイドの目的はコミュニティ駆動であることです。ご協力いただけると大変ありがたいです。例えば、テストセクションを拡張することによって、または、このスタイルガイドをあなたの言語に翻訳することによってコミュニティに貢献することができます。
diff --git a/README-ko-kr.md b/README-ko-kr.md
deleted file mode 100644
index 5b4265c..0000000
--- a/README-ko-kr.md
+++ /dev/null
@@ -1,433 +0,0 @@
-# 소개
-
-이 스타일 가이드의 목표는 AngularJS 애플리케이션을 제작하는 데 있어서 현재의 모범 사례(Best practice)를 제시하는 것입니다.
-이 문서의 모범 사례는 아래 자료들로부터 수집되었습니다.
-
-0. AngularJS 소스 코드
-0. 제가 읽은 소스 코드와 문서들
-0. 제 경험
-
-**주의**: 이 문서는 아직 작성 중이며 이 문서의 주목표는 공동체 주도(community-driven)로 진행되어 모든 공동체가 스타일 차이를 줄여 이해하기 쉽게 하는 것입니다.
-
-이 스타일 가이드에서는 자바스크립트 개발 가이드라인을 제공하진 않습니다. 이와 관련된 문서는 아래에서 찾을 수 있습니다.
-
-0. [구글 자바스크립트 스타일 가이드](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [모질라 자바스크립트 스타일 가이드](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's 자바스크립트 스타일 가이드](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's 자바스크립트 스타일 가이드](http://javascript.crockford.com/code.html)
-0. [Airbnb 자바스크립트 스타일 가이드](https://github.com/airbnb/javascript)
-
-AngularJS 개발에 대해서는 [구글 자바스크립트 스타일 가이드](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)를 추천합니다.
-
-이와 비슷한 항목이 AngularJS GitHub 위키에 [ProLoser](https://github.com/ProLoser)가 작성하였습니다. [여기](https://github.com/angular/angular.js/wiki)에서 확인할 수 있습니다.
-
-# 차례
-* [일반](#일반)
- * [디렉터리 구조](#디렉터리-구조)
- * [마크업](#마크업)
- * [Digest cycle 최적화](#digest-cycle-최적화)
- * [기타](#기타)
-* [모듈](#모듈)
-* [컨트롤러](#컨트롤러)
-* [디렉티브](#디렉티브)
-* [필터](#필터)
-* [서비스](#서비스)
-* [템플릿](#템플릿)
-* [라우팅](#라우팅)
-* [기여](#기여)
-
-# 일반
-
-## 디렉터리 구조
-
-규모가 큰 AngularJS 애플리케이션엔 다수의 컴포넌트가 있기 때문에 계층적(hierarchy)으로 디렉터리 구조를 잡는 것이 좋습니다. 주로 두 가지 접근법이 사용됩니다.
-
-* 컴포넌트 타입 별로 상위 디렉터리를 만들고, 기능별로 하위 디렉터리를 구성.
-
-이러한 접근법을 사용한 디렉터리 구조는 다음과 같습니다.
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── page1
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── page2
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── page1
-│ │ │ └── directive1.js
-│ │ └── page2
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── page1
-│ │ └── page2
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-
-* 기능 별로 상위 디렉터리를 나누고, 컴포넌트 타입 별로 하위 디렉터리를 구성.
-
-다음과 같은 디렉터리 구조가 됩니다.
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── page1
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── page2
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-
-* 디렉티브 디렉터리를 만들 땐 디렉티브에 관련된 파일들(템플릿, CSS/SASS 파일, 자바스크립트)을 한 폴더에 모읍니다. 이런 방식으로 디렉터리를 구성한다면 프로젝트 어디서나 이 구조를 일관적으로 사용할 수 있습니다.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-이러한 디렉티브 디렉터리 구성은 위에서 제시한 두 가지 디렉터리 구성법에서 모두 사용할 수 있습니다.
-
-* 두 디렉터리 구조에서 [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home)을 사용할 수도 있습니다. 이것을 사용하면 특정 컴포넌트와 그 컴포넌트의 유닛 테스트는 같은 폴더에 저장됩니다. 따라서 컴포넌트의 코드가 변경되었을 때 테스트 코드를 찾기 쉬우며, 테스트 자체가 문서 및 사용법(use case)이 되게 됩니다.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* `app.js`파일에는 라우트 정의와 설정이 포함되어야 하며, 필요한 경우 초기화 작업을 해줍니다.
-* 하나의 자바스크립트 파일은 하나의 컴포넌트만을 포함하도록 합니다. 파일 이름은 컴포넌트의 이름과 같아야 합니다.
-* [Yeoman](http://yeoman.io)이나 [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home)와 같은 Angular 프로젝트 구조 템플릿을 사용합니다.
-
-저는 같은 종류의 컴포넌트를 찾기 쉬운 첫 번째 방법을 선호합니다.
-
-각 컴포넌트의 명명 규칙은 각 컴포넌트 절에서 설명합니다.
-
-## 마크업
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) 스크립트들은 하단에 넣으세요.
-
-```html
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-스크립트들은 간단하게 작성하고 Angular JS의 디렉티브 다음에 위치시킵니다. 이렇게 하면 코드와 프레임워크에 의해 변경, 향상된(Enhanced) html들을 쉽게 찾을 수 있습니다. (즉, 유지보수성이 향상됩니다)
-
-
-```html
-
-```
-
-다른 HTML atribute들은 이 [코드 가이드](http://mdo.github.io/code-guide/#html-attribute-order)를 참고하여 작성합니다.
-
-
-## Digest cycle 최적화
-
-* 가장 중요한 변수만 감시합니다.(예를 들어 실시간 통신이 필요한 경우 각각의 메시지를 받을 때 digest loop를 일으키지 않아야 합니다).
-* 최초의 초기화 이후 내용 변경을 막기 위해 [`bindonce`](https://github.com/Pasvaz/bindonce)와 같은 single-time watcher를 사용합니다.
-* `$watch`는 가능한 간단하게 작성합니다. 하나의 `$watch`안에서 무겁고 느린 연산 작업을 하는 것은 애플리케이션 전체가 느려질 것입니다. (자바스크립트는 싱글 스레드로 작동하므로 $digest 루프 역시 싱글 스레드로 작동합니다.)
-* `$timeout` 함수의 세 번째 파라메터를 false로 설정하면 `$timeout` 콜백 함수의 호출 시 watch되는 변수(variable)들이 없을 때 `$digest` 루프가 건너뜁니다.
-
-
-## 기타
-
-* 다음과 같은 사용을 권장합니다:
- * `setTimeout` 대신 `$timeout`
- * `setInterval` 대신 `$interval`
- * `window` 대신 `$window`
- * `document` 대신 `$document`
- * `$.ajax` 대신 `$http`
-
-이를 통해 테스트를 쉽게 만들고 예상치 못한 작동을 방지할 수 있습니다. (예를 들어 `setTimeout`에서 `$scope.$apply`를 잊는 경우)
-
-* 아래의 툴을 사용해 작업을 자동화하세요.
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* 콜백 대신에 promises(`$q`)를 사용하세요. $q를 사용하면 깔끔하고 우아한 코드가 되며, 여러분을 콜백 지옥에서 구원해줄 것입니다.
-* 가능한 `$http` 대신 `$resource`를 사용하세요. 높은 수준의 추상화는 자질구레한 작업으로부터 해방시켜줍니다.
-* AngularJS pre-minifier([ngmin](https://github.com/btford/ngmin), [ng-annotate](https://github.com/olov/ng-annotate))를 사용해 minification 시의 문제를 미리 방지합니다.
-* 전역 변수를 사용하지 마세요. 모든 의존성은 의존성 주입(DI)로 해결하시기 바랍니다.
-* `$scope`를 오염시키지 마세요. 오직 템플릿에서 사용하는 변수와 함수들만 추가하세요.
-* [`nginit`보다 컨트롤러를 사용하세요](https://github.com/angular/angular.js/pull/4366/files). `ngInit`의 유일한 적절한 사용법은 `ngRepeat` 프로퍼티의 별칭을 만드는 일입니다. 이 외의 모든 경우엔 변수 범위(scope)를 초기화하는데 `ngInit` 대신 컨트롤러를 사용해야 합니다.
-* 변수명, 프로퍼티명, 메소드명 앞에 `$`를 사용하지 않습니다. `$`를 앞에 붙이는 명명법은 AngularJS와 관련되어 특별한 의미로 사용됩니다.
-* Angular JS의 DI 매커니즘을 이용하여 의존성을 처리할 때 타입 별로 의존성들을 정렬하세요. built-in Angular JS 의존성이 먼저 나오고 그 다음 별도로 추가한 의존성들이 나열되야합니다.
-
-
-# 모듈
-* 모듈의 이름은 lowerCamelCase로 명명되어야 합니다. 모듈 `a`의 하위 모듈 `b`를 가리키려면 `a.b`와 같이 네임스페이스를 중첩시킬 수 있습니다.
-
-모듈의 구성은 일반적으로 두 가지 기준이 사용됩니다.
-
-0. 기능
-0. 컴포넌트 타입
-
-두 접근법에 큰 차이는 없지만 첫 번째 방법이 좀 더 깔끔합니다. 또한 (아직 AngularJS 로드맵에는 없습니다만) 모듈의 지연 로딩(lazy-loading)이 지원된다면 애플리케이션의 성능을 향상시킬 수 있습니다.
-
-# 컨트롤러
-
-* 컨트롤러에서 DOM을 조작하지 마세요. 컨트롤러 대신 디렉티브를 사용하시기 바랍니다.
-* 컨터르롤러의 이름은 컨트롤러의 이름을 기준으로 지어야 하며(예를 들어 shopping cart, homepage, admin panel), 이름의 끝에는 `Ctrl`을 붙여줍니다. 컨트롤러 이름은 UpperCamelCase를 사용해 작성합니다(`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, etc.).
-* 컨트롤러를 전역 공간에 정의하지 마세요(이런 사용법이 AngularJS 자체에서 제약이 되어있지 않더라도, 이러한 방법은 전역 공간을 더럽히는 안 좋은 방법입니다).
-* 컨트롤러를 정의할 때 배열 문법을 사용하세요.
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
-}]);
-```
-
-이런 식으로 정의하면 minification에서 발생할 수 있는 문제를 피할 수 있습니다. [ng-annotate](https://github.com/olov/ng-annotate)나 grunt task [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)와 같은 툴을 사용하면 자동적으로 배열을 사용해 컨트롤러를 정의합니다.
-
-* 컨트롤러의 의존성은 원래 이름을 사용하세요. 이를 통해 읽기 쉬운 코드를 만들 수 있습니다.
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-```
-
-
-위의 예제보다는 아래의 예제가 읽기 쉽습니다.
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-```
-
-이 방법은 스크롤이 필요할 정도로 코드가 길어졌을 때 특히 유용합니다. 원래의 이름을 사용하지 않으면 코드를 작성할 때 변수가 어떤 것과 관련되었는지 까먹을 것입니다.
-
-* 컨트롤러는 가능한 최소한의 기능만을 가져야 합니다. 추상적이고 일반적으로 쓰이는 함수들은 서비스에 정의하세요.
-* 다른 컨트롤러와 소통이 필요한 경우엔 메소드 호출이나 `$emit`, `$broadcast`, `$on` 메소드를 사용하세요. `$emit`이나 `$broadcasted` 메소드는 최소한으로 유지합니다.
-* `$emit`나 `$broadcast`를 통해서 넘겨지는 모든 메시지는 이름 충돌이나 버그를 유발할 수 있기 때문에 목록을 작성해서 관리하세요.
-* 형식화 기능(formatting logic)이나 데이터 형식을 캡슐화시킬 때에는 [필터](#필터)를 사용하거나 같이 의존성을 선언하세요.
-
-
-```JavaScript
-module.filter('myFormat', function () {
- return function () {
- //body...
- };
-});
-```
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
-}]);
-```
-
-* 중첩 컨트롤러의 경우 "nested scoping"을 사용하세요. (`controllerAs` syntax):
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```html
-
-```
-
-# 디렉티브
-
-* 디렉티브의 이름은 lowerCamelCase를 사용하세요.
-* link 함수에서 `$scope` 대신 `scope`를 사용하세요. complie 시 post/pre link 함수들을 호출할 때 인수(argument)들이 이미 정의되어 넘어오기 때문에 DI를 사용해 이것들을 변경할 수 없습니다. 이 스타일은 AngularJS 소스코드에서 사용하는 스타일입니다.
-* 여러분만의 특별한 전치사를 붙여서 사용하세요. 이는 Third-party 라이브러리와 이름 충돌을 방지해줍니다.
-* `ng`와 `ui`를 전치사로 사용하지 마세요. 이 단어들은 AngularJS와 AngularJS UI에서 사용되는 전치사입니다.
-* 디렉티브를 통해서만 DOM 조작을 해주세요.
-* 재사용 가능한 컴포넌트를 만들려면 독립된 범위(scope)를 만들어주세요.
-* 디렉티브는 주석이나 클래스보단 요소(element)나 속성(attribute)으로 사용하세요. 이는 코드의 가독성을 향상시켜줍니다.
-* `$scope.$on('$destroy', fn)`를 사용하여 정리(clean-up)하세요. 이 방식은 특히 third-party 플러그인을 디렉티브로 감싸서 사용할 때 유용합니다.
-* 신뢰할 수 없는 컨텐츠(untrusted content)를 다룰 때는 `$sce` 사용을 잊지 마세요.
-
-
-# 필터
-
-* 이름은 lowerCamelCase를 사용하세요
-* 필터는 가능한 한 가볍게 만들어주세요. 필터는 간혹 `$digest` 루프 내에서 호출될 수 있기 때문에 느린 필터는 애플리케이션 전체를 느리게 만들 수 있습니다.
-* 필터는 한 가지 일만 하게 하세요. 좀 더 복잡한 조작은 존재하는 필터들을 묶어서(piping) 해결할 수 있습니다.
-
-
-# 서비스
-
-* 서비스명은 camelCase나 CamelCase로 작성.
- * 생성자(constructor) 함수와 같은 서비스의 이름은 UpperCamelCase (PascalCase)를 사용합니다. 사용 예:
-
- ```JavaScript
- module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
- });
-
- module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
- });
- ```
-
- * 그 외의 서비스들은 lowerCamelCase를 사용합니다.
-
-* 서비스엔 비지니스 로직을 캡슐화합니다.
-* 도메인 나타내는 서비스들은 `factory` 대신에 `service`를 선호합니다. 이 방법으로 "예전의"("klassical") 상속의 장점을 누릴 수 있습니다.
-
- ```JavaScript
- function Human() {
- //body
- }
- Human.prototype.talk = function () {
- return "I'm talking";
- };
-
- function Developer() {
- //body
- }
- Developer.prototype = Object.create(Human.prototype);
- Developer.prototype.code = function () {
- return "I'm coding";
- };
-
- myModule.service('Human', Human);
- myModule.service('Developer', Developer);
- ```
-
-* 세션 수준의 캐시는 `$cacheFactory`를 사용하세요. 이는 요청(request)나 무거운 처리를 캐시하고 싶을 때 사용합니다.
-* 설정 정의가 필요 한 서비스라면 provider나 다음과 같은 `config` 콜백을 이용해 설정할 수 있습니다.
-
- ```JavaScript
- angular.module('demo', [])
- .config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
- });
-
- var demo = angular.module('demo');
-
- demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
- });
- ```
-
-# 템플릿
-
-* 문서가 반짝이는 현상을 방지하기 위해서 `{{}}` 대신에 `ng-bind`나 `ng-cloak`를 사용하세요.
-* 템플릿에서는 복잡한 표현(expression) 작성을 가능한 자제합니다.
-* 동적으로 src 속성을 사용해야 한다면 `src`를 `{{}}`와 같이 사용하는 대신에 `ng-src`를 사용하세요.
-* 앵커(anchor)태그의 `href`를 동적으로 설정할 때 `href`안에 `{{ }}`템플릿보다는 `ng-href`를 사용하세요.
-
-* `style`속성을 $scope에 정의된 문자열로 사용하고 싶을 때 `{{}}`를 사용하는 대신에 `ng-style`를 사용하면 $scope에 객체를 선언해 여러 가지 속성을 한꺼번에 지정할 수 있습니다.
-```HTML
-...
-$scope.divStyle = {
- width: 200,
- position: 'relative'
-};
-...
-
IE에서도 작동하는 아름다운 스타일을 가진 div
;
-```
-
-# 라우팅
-
-* view가 보여지기 전에 `resolve`를 사용해 의존관계를 해결해주세요.
-
-# 기여
-
-이 문서는 communty-driven을 지향하며, 문서에 대한 기여는 언제든 대환영입니다.
-부족한 부분을 보충해주시거나 여러분이 사용하는 모국어로 문서를 번역해주셔도 좋습니다.
diff --git a/README-pl-pl.md b/README-pl-pl.md
deleted file mode 100644
index c43d805..0000000
--- a/README-pl-pl.md
+++ /dev/null
@@ -1,293 +0,0 @@
-# Wprowadzenie
-
-Celem tego style guide'a jest przedstawienie zbioru najlepszych praktyk i wytycznych dla aplikacji napisanych w AngularJS. Opisywane praktyki to zbiór:
-
-0. Kodu źródłowego AngularJS
-0. Kodu źródłowego lub artykułów, które przeczytałem
-0. Własnego doświadczenia
-
-**Uwaga**: to wciąż szkic style guide'a, jego przeznaczeniem jest to, aby był tworzony przez społeczność, tak więc uzupełnianie go, będzie docenione przez całą społeczność.
-
-W tym style guidzie nie znajdziesz wytycznych do programowania w JavaScriptcie. Takowe znajdziesz tu:
-
-0. [Style guide'y JavaScriptu Google'a](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Style guide'y JavaScriptu Mozilli](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [Style guide'y JavaScriptu GitHuba](https://github.com/styleguide/javascript)
-0. [Style guide'y JavaScriptu Douglasa Crockforda](http://javascript.crockford.com/code.html)
-0. [Style guide'y JavaScriptu AirBnB](https://github.com/airbnb/javascript)
-
-Do pisania kodu w AngularJS, zaleca się stosować do wytycznych przygotowanych przez [Google'a](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Na stronach wiki projektu AngularJS na Githubie, istnieje podobna sekcja przygotowana przez [ProLoser](https://github.com/ProLoser), możesz się z nią zapoznać [tu](https://github.com/angular/angular.js/wiki).
-
-# Spis treści
-* [Ogólne](#ogólne)
- * [Struktura katalogów](#struktura-katalogów)
- * [Optymalizuj cykl `$digest`](#optymalizuj-cykl-digest)
- * [Inne](#inne)
-* [Moduły](#moduły)
-* [Kontrolery](#kontrolery)
-* [Dyrektywy](#dyrektywy)
-* [Filtry](#filtry)
-* [Usługi](#usługi)
-* [Szablony](#szablony)
-* [Routing](#routing)
-* [Testy](#testy)
-* [Wsparcie](#wsparcie)
-
-# Ogólne
-
-## Struktura katalogów
-
-Duże aplikacje napisane w AngularJS posiadają wiele komponentów, dlatego też najlepiej grupować je w katalogi. Istnieją dwa podejścia:
-
-* Tworzenie katalogów wysokiego poziomu, w oparciu o podział na typy komponentów oraz niższego poziomu, w oparciu o podział na funkcjonalność.
-
-W przypadku tego typu podziału, struktura naszego projektu będzie się kształtować następująco:
-
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── page1
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── page2
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── page1
- │ │ │ └── directive1.js
- │ │ └── page2
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── page1
- │ │ └── page2
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── lib
- └── test
-
-* Tworzenie katalogów wysokiego poziomu, w oparciu o podział na funkcjonalność oraz niższego poziomu, w oparciu o podział na typy komponentów.
-
-Przykład struktury:
-
- .
- ├── app
- │ ├── app.js
- │ ├── common
- │ │ ├── controllers
- │ │ ├── directives
- │ │ ├── filters
- │ │ └── services
- │ ├── page1
- │ │ ├── controllers
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ ├── directives
- │ │ │ └── directive1.js
- │ │ ├── filters
- │ │ │ ├── filter1.js
- │ │ │ └── filter2.js
- │ │ └── services
- │ │ ├── service1.js
- │ │ └── service2.js
- │ └── page2
- │ ├── controllers
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ └── filter3.js
- │ └── services
- │ └── service3.js
- ├── lib
- └── test
-
-* W przypadku tworzenie dyrektywy, przydatnym jest umieszczenie wszystkich plików powiązanych z tworzoną dyrektywą (np. szablony, pliki CSS/SASS, pliki JS) w jednym folderze. Jeżeli wybierzesz ten styl struktury, bądź konsekwentny w całym projekcie.
-
- app
- └── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-
-Wyżej przedstawione podejście, może być wykorzystywane niezależnie od wybranej struktury projektu (jednej z powyższych).
-
-* Istnieje niewielka różnica pomiędzy [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home), a strukturami opisywanymi powyżej. W przypadku ng-boilerplate, wszystkie pliki związane z testami jednostkowymi trzymane są w tym samym katalogu, w którym znajduje się dany komponent. Dzięki temu, w przypadku konieczności dokonania zmian, łatwiej znaleźć testy powiązane z komponentem, testy również spełniają rolę dokumentacji oraz pokazują przykłady użycia danego komponentu.
-
- services
- ├── cache
- │ ├── cache1.js
- │ └── cache1.spec.js
- └── models
- ├── model1.js
- └── model1.spec.js
-
-* Plik `app.js` zawiera ustawienia dotyczące routingu oraz konfigurację projektu.
-* Każdy plik JS powinien zawierać tylko jeden komponent. Plik powinien być nazwany zgodnie z nazwą komponentu.
-* Używaj Angularowej struktury szablonów takich, jak [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Preferuję pierwszą opisywaną przeze mnie strukturę, ponieważ dzięki niej, znalezienie komponentów jest prostsze.
-
-Konwencje nazewnicze komponentów można znaleźć w każdej sekcji dot. komponentów.
-
-## Optymalizuj cykl `$digest`
-
-* Obserwuj jedynie najistotniejsze zmienne (np. gdy używasz komunikacji w czasie rzeczywistym, nie rób pętli `$digest` przy każdej odebranej wiadomości).
-* Staraj się, aby wszelkie wykorzystania `$watch` były najprostsze, jak to tylko możliwe. Skomplikowane i wolne operacje wykonywane wewnątrz jednego `$watch` spowodują spowolnienie całej aplikacji (pętla `$digest` jest wykonywana w jednym wątku, ponieważ JavaScript jest jednowątkowy).
-* Dodaj trzeci argument dla funkcji `$timeout`, aby ominąć pętlę cyklu `$digest`, gdy na żadną ze zmiennych nie ma wpływu wywołanie callbacka funkcji `$timeout`.
-
-## Inne
-
-* Używaj:
- * `$timeout` zamiast `setTimeout`,
- * `$interval` zamiast `setInterval`,
- * `$window` zamiast `window`,
- * `$document` zamiast `document`,
- * `$http` zamiast `$.ajax`
-
-Dzięki temu, testowanie kodu będzie prostsze i w niektórych przypadkach, uchroni przed nieprzewidzianymi zachowaniami (przykład: gdy zapomniałeś/aś o `$scope.$apply` w `setTimeout`).
-
-* Zautomatyzuj swój cykl pracy używając narzędzi typu:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Używaj promises (`$q`) zamiast callbacków. Dzięki temu twój kod będzie bardziej czytelny i czystszy, oraz uchroni cię przed piekłem callbacków.
-* Używaj `$resource` zamiast `$http` kiedy to tylko możliwe. Wyższy poziom abstrakcji uchroni cię przed nadmiarem kodu.
-* Nie zaśmiecaj `$scope`. Dodawaj tylko te funkcje i zmienne, których używasz w szablonach.
-* Preferuj używanie [kontrolerów zamiast `ngInit`](https://github.com/angular/angular.js/pull/4366/files). Jedyne prawidłowe użycie `ngInit` jest wtedy, gdy chcesz nadać alias specjalnym właściwościom `ngRepeat`. Poza tym, powinieneś/powinnaś używać kontrolerów, a nie `ngInit`, aby zainicjować wartości scope'a.
-* Nie używaj przedrostka `$` dla nazw zmiennych, właściwości oraz metod. Ten przedrostek jest zarezerwowany jedynie do użytku przez AngularJS.
-
-# Moduły
-
-* Nazewnictwo modułów powinno być stosowane zgodnie z lowerCamelCasem. W przypadku, gdy chcemy stworzyć moduł `b` będący podmodułem modułu `a`, możesz wykorzystać przestrzeń nazw: `a.b.`.
-
-Istnieją dwa najpopularniejsze sposoby na strukturyzowanie modułów:
-
-0. Ze względu na funkcjonalność
-0. Ze względu na typ komponentu
-
-Obecnie nie ma dużej różnicy, jednak pierwsze rozwiązanie jest czystsze. Dodatkowo, jeżeli opóźnione ładowanie modułów jest zaimplementowane (obecnie nie jest w planach AngularJS), poprawi to wydajność aplikacji.
-
-# Kontrolery
-
-* Nie manipuluj DOMem wewnątrz kontrolerów, spowoduje to, że kontrolery będą trudniejsze w testowaniu oraz złamie [zasadę SoC](https://en.wikipedia.org/wiki/Separation_of_concerns). Używaj do tego celu dyrektyw.
-* Nazewnictwo kontrolerów bazuje na funkcjonalności kontrolera (np. koszyk, strona główna, panel administracyjny) oraz przyrostka `Ctrl`. Kontrolery powinny być nazywane UpperCamelCasem (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, itd.).
-* Kontrolery nie powinny być definiowane globalnie (mimo, że AngularJS na to pozwala, zanieczyszczanie globalnej przestrzeni nazw jest złą praktyką).
-* Używaj tablicy, aby zdefiniować kontrolery:
-
-````javascript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
-}]);
-````
-
-Używanie tego typu deklarowania kontrolerów rozwiązuje problemy z minifikowaniem kodu. Możesz dynamicznie tworzyć tablice zależności, używając do tego narzędziu typu [ng-annotate](https://github.com/olov/ng-annotate) lub zadania grunta [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate).
-* Używaj oryginalnych nazw w zależnościach kontrolera. Dzięki temu, kod będzie bardziej czytelny.
-
-````javascript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-````
-
-jest mniej czytelne niż:
-
-````javascript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-````
-
-Powyższa zasada pomaga przede wszystkim w plikach, które są dłuższe i żeby zobaczyć listę zależności, musisz przewijać ekran do góry. Przy okazji, stosowanie pełnych nazw zależności, uchroni przed zapomnieniem, czym jest dana zmienna.
-
-* Twórz kontrolery tak małe, jak to tylko możliwe. Przenieś wiele razy używane funkcje do usług.
-* Komunikuj się pomiędzy różnymi kontrolerami stosując metodę inwokacji (przykładowo, gdy dzieci chcą się skomunikować z rodzicem) lub metodami takimi, jak: `$emit`, $broadcast` oraz `$on`. Emitowane oraz nadwane wiadomości powinne być ograniczone do minimum.
-* Stwórz spis wszystkich wiadomości emitowanych (`$emit`) lub nadawanych (`$broadcast`) w aplikacji, aby uniknąć zduplikowanych nazw i możliwych błędów.
-* Jeżeli musisz formatować dane w jakikolwiek sposób, przenieś logikę do [filtra](#filtry) i zadeklaruj go, jako zależność dla danego kontrolera:
-
-````javascript
-module.filter('myFormat', function () {
- return function () {
- //...body
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //...body
-}]);
-````
-
-# Dyrektywy
-
-* Nazywaj dyrektywy stosujać lowerCamelCase'a.
-* Używaj `scope` zamiast `$scope` wewnątrz funkcji `link`. Podczas kompilacji, `post`/`pre` łączy funkcje, które dotychczas zdefiniowałeś i argumenty zostaną przekazane, kiedy funkcja jest wywoływana. Argumenty te, nie mogą zostać zmienione używając Dependency Injection. Ta technika wykorzystywana jest również w kodzie źródłowym AngularJS.
-* Używaj własnych przedrostków dla swoich dyrektyw, aby uniknąć konfliktów z zewnętrznymi bibliotekami.
-* Nie używaj przedrostków `ng` oraz `ui`, ponieważ są one zarezerwowane jedynie dla AngularJS oraz AngularJS UI.
-* Manipulacja DOMem dozwolona jest jedynie poprzez dyrektywy.
-* Twórz odizolowany zakres, gdy tworzysz komponenty wielokrotnego użytku.
-* Używaj dyrektyw jako atrybuty lub elementy zamiast komentarzy i klas. Sprawi to, że kod będzie bardziej czytelny.
-* Używaj `$scope.$on('$destroy', fn)` do "sprzątania". Przydaje się to w szczególności, gdy opakowujesz zewnętrzną bibliotekę w dyrektywę.
-* Nie zapomnij użyć `$sce` w przypadku, gdy masz do czynienia z niezaufanymi treściami.
-
-# Filtry
-
-* Używaj lowerCamelCase'a do nazywania swoich filtrów.
-* Filtry powinny być tak proste, jak to tylko możliwe. Często są one wywoływane podczas pętli `$digest`, tak więc tworzenie filtrów, które działają wolno, spowolni działanie całej aplikacji.
-* Filtry powinien robić jedną rzecz, tworząc je, pamiętaj o ich odseparowaniu. Bardziej skomplikowane manipulacje można uzyskać łącząc istniejące już filtry.
-
-# Usługi
-
-* Używaj camelCase'a (lower lub Upper) do nazywania swoich usług.
-* Hermetyzuj logikę biznesową w usługach.
-* Usługi hermetyzujące logikę biznesową są komponentem typu `service`, a nie `factory`.
-* Do cache'owania na poziomie sesji używaj `$cacheFactory`. Powinno się tego używać do cache'owania wyników zapytań oraz dużych obliczeń.
-
-# Szablony
-
-* Używaj atrybutów `ng-bind` oraz `ng-cloak` zamiast zwykłego `{{ }}`, aby uniknąć migającej strony podczas ładowania.
-* Unikaj pisania skomplikowanych wyrażeń wewnątrz szablonów.
-* Jeżeli musisz ładować obrazek dynamicznie, używaj atrybutu `ng-src` zamiast `src` z wartością `{{ }}`.
-* Zamiast używania zmiennej w zakresie jako tekst i używania jej jako wartości atrybutu `style` w szablonie z `{{ }}`, używaj dyrektywy `ng-style`, która przyjmuje parametry w postaci obiektu z zakresu z wartościami, przykład:
-
-````javascript
-$scope.divStyle = {
- width: 200;
- position: 'relative';
-}
-````
-````html
-
mój pięknie ostylowany div, który będzie działać w IE
-````
-
-# Routing
-
-* Używaj `resolve`, aby rozwiązać problemy z zależnościami zanim widok jest wyświetlony.
-
-# Testy
-
-Wkrótce...
-
-Do czasu, aż ta sekcja zostanie uzupełniona, możesz [przeczytać o wzorach testów w AngularJS](https://github.com/daniellmb/angular-test-patterns).
-
-# Wsparcie
-
-Celem tego style guide'a jest to, aby był rozwijany przez społeczność, w związku z tym, wszelkie próby udzielenia się są wskazane.
-
-Przykładowo, możesz pomóc opisując sekcję dotyczącą testów oraz tłumacząc ten style guide na swój język.
-
-[](https://bitdeli.com/free "Bitdeli Badge")
diff --git a/README-pt-br.md b/README-pt-br.md
deleted file mode 100644
index 3f61b71..0000000
--- a/README-pt-br.md
+++ /dev/null
@@ -1,249 +0,0 @@
-#Introdução
-
-O objetivo deste guia é apresentar um conjunto de boas práticas e diretrizes para uma aplicação AngularJS. Estas boas práticas são baseadas em:
-
-0. Código fonte do AngularJS
-0. Códigos fonte ou artigos que li
-0. Minha própria experiência
-
-**Nota**: Este guia ainda é um rascunho, seu objetivo principal é ser construído pela comunidade, então ao contribuir você será muito apreciado por toda ela.
-
-Neste guia você **não** vai encontrar diretrizes para desenvolvimento JavaScript. O que pode ser encontrado em:
-
-0. [Guia JavaScript Google](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Guia JavaScript Mozilla](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [Guia JavaScript Github](https://github.com/styleguide/javascript)
-0. [Guia JavaScript Douglas Crockford](http://javascript.crockford.com/code.html)
-
-Para o desenvolvimento usando o AngularJS é recomendado o [Guia JavaScript Google](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Na wiki do AngularJS no Github temos uma seção similar feita pelo [ProLoser](https://github.com/ProLoser), você pode vê-la [aqui](https://github.com/angular/angular.js/wiki).
-
-#Índice
-* [Geral](#geral)
- * [Estrutura de Diretório](#estrutura-de-diretorio)
- * [Otimizando o ciclo digest](#otimizando-o-ciclo-digest)
- * [Outros](#outros)
-* [Módulos](#modulos)
-* [Controladores](#controladores)
-* [Diretivas](#diretivas)
-* [Filtros](#filtros)
-* [Serviços](#serviços)
-* [Templates](#templates)
-* [Roteamento](#roteamento)
-
-#Geral
-
-##Estrutura de Diretório
-
-Uma vez que uma grande aplicação AngularJS tem muitos componentes, é melhor estruturá-la em uma hierarquia de diretórios. Há duas abordagens:
-
-* Criando uma divisão alto nível por tipos de componentes e uma divisão baixo nível por funcionalidade.
-
-Desta maneira a estrutura do diretório irá se parecer com:
-
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── page1
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── page2
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── page1
- │ │ │ └── directive1.js
- │ │ └── page2
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── page1
- │ │ └── page2
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── lib
- └── test
-
-* Criando uma divisão alto nível por funcionalidade e baixo nível por tipos de componentes.
-
-Aqui está seu modelo:
-
- .
- ├── app
- │ ├── app.js
- │ ├── common
- │ │ ├── controllers
- │ │ ├── directives
- │ │ ├── filters
- │ │ └── services
- │ ├── page1
- │ │ ├── controllers
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ ├── directives
- │ │ │ └── directive1.js
- │ │ ├── filters
- │ │ │ ├── filter1.js
- │ │ │ └── filter2.js
- │ │ └── services
- │ │ ├── service1.js
- │ │ └── service2.js
- │ └── page2
- │ ├── controllers
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ └── filter3.js
- │ └── services
- │ └── service3.js
- ├── lib
- └── test
-
-* Quando criarmos uma diretiva, pode ser útil colocar todos os arquivos associados as diretivas (i.e. templates, arquivos CSS/SASS, JavaScript) em uma pasta única. Se você escolher usar este estilo, seja consistente e use-o em todo seu projeto.
-
- app
- └── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-
-Esta abordagem pode ser combinada com ambas as estruturas de diretórios acima.
-
-* O arquivo `app.js` contém definição de rotas, configurações e/ou inicializações manuais (se necessário).
-* Cada arquivo JavaScript deve conter apenas um componente. O arquivo deve ser nomeado com o nome do componente.
-* Use estruturas de projeto Angular como [Yeoman](http://yeoman.io) ou [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Eu prefiro a primeira estrutura porque ela cria componentes comuns e fáceis de se achar.
-
-Convenções sobre nomeação de componentes podem ser achadas em cada seção do componente.
-
-##Otimizando o ciclo digest
-
-* Observe somente as variáveis vitais (por exemplo: quando se usar comunicação em tempo real, não utilize um loop digest para cada mensagem recebida).
-* Faça cálculos em `$watch` o mais simples que puder. Fazer cálculos pesados e lentos em um simples `$watch` irá atrasar toda a aplicação (o loop $digest é feito em 'single thread' por causa da natureza 'single thread' do JavaScript).
-
-##Outros
-
-* Use:
- * `$timeout` ao invés de `setTimeout`
- * `$interval` ao invés de `setInterval`
- * `$window` ao invés de `window`
- * `$document` ao invés de `document`
- * `$http` ao invés de `$.ajax`
-
-Isto fará seus testes mais fáceis e em certos casos irá prevenir comportamentos inesperados (por exemplo, se você perder `$scope.$apply` em `setTimeout`).
-
-* Automatize seu fluxo de trabalho utilizando ferramentas como:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Use promises (`$q`) ao invés de callbacks. Isso tornará seu código mais elegante e limpo, e o salvará do inferno de callbacks.
-* Use `$resource` ao invés de `$http` quando possível. Um alto nível de abstração irá lhe salvar de redundância.
-* Use um pré-minificador AngularJS (como [ngmin](https://github.com/btford/ngmin) ou [ng-annotate](https://github.com/olov/ng-annotate)) para prevenir problemas depois da minificação.
-* Não use globais. Resolva todas as dependências usando a Injeção de Dependências.
-* Não polua seu `$scope`. Somente adicione funções e variáveis que irão ser usadas nos templates.
-
-#Módulos
-
-Há duas maneiras comuns de se estruturar os módulos:
-
-0. Por funcionalidade
-0. Por tipo de componente
-
-Atualmente não há uma grande diferença, mas a primeira forma parece mais limpa. Também, se os módulos 'lazy-loading' forem implementados (fora do roteiro AngularJS atualmente), isso irá melhorar a performance da sua aplicação.
-
-#Controladores
-
-* Não manipule DOM nos controladores. Use diretivas para isso.
-* O nome do controlador é dado pela sua funcionalidade (por exemplo *shopping cart*, *homepage*, *admin panel*) e o adicional `Ctrl` no final. Os controladores são nomeados no formato UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, etc.).
-* Os controladores não devem ser definidos como globais (não importa que AngularJS permita isso, é uma má pratica pois polui o namespace).
-* Use a sintaxe de array para as definições do controlador:
-
-
-
- module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
- }]);
-
-
-Use este tipo de definição para evitar problemas com minificação. Você pode gerar automaticamente o array de definição a partir de um padrão usando ferramentas como [ng-annotate](https://github.com/olov/ng-annotate) (e uma tarefa grunt [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-
-* Use os nomes originais das dependências dos controladores. Isso irá ajudá-lo a produzir um código mais legível:
-
-
-
- module.controller('MyCtrl', ['$scope', function (s) {
- //...body
- }]);
-
-
-é menos legível que:
-
-
- module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
- }]);
-
-
-Isso é especialmente aplicado a um arquivo que contenha muito código que se faça necessário rolar (usar o scroll) por ele. Pois é provável que você esqueça qual variável está amarrada em qual dependência.
-
-* Faça os controladores o mais enxuto possível. Resuma as funções normalmente usadas no serviço.
-* Comunique entre controladores diversos usando o método de invocação (possível quando os elementos filhos querem se comunicar com os pais) ou `$emit`, `$broadcast` e `$on` métodos. As mensagens emitidas ($emit) e transmitidas ($broadcast) devem ser mantidas minimamente.
-* Faça uma lista de todas as mensagens que são passadas usando `$emit`, `$broadcast` e administre-as cuidadosamente por causa da coalisão de nomes e possíveis erros.
-* Quando você precisar formatar dados, encapsule a lógica de formatação em um [filtro](#filtros) e declare isso como uma dependência:
-
-
- module.filter('myFormat', function () {
- return function () {
- //body...
- };
- });
-
- module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
- }]);
-
-#Diretivas
-
-* Nomeie suas diretivas no padrão lowerCamelCase
-* Use `scope` ao invés de `$scope` na sua função de link. Na compilação, pós/pre funções link que você tenha, definem os argumentos que irão ser passados quando a função é invocada, você não será capaz de muda-los usando DI (injeção de dependências). Este modelo também é usado no código fonte do AngularJS.
-* Use prefixos customizados para suas diretivas para previnir colisões de nomes com bibliotecas de terceiros.
-* Não use `ng` ou `ui` prefixos pois eles estão reservados para o uso do AngularJS e AngularJS UI.
-* Manipulações DOM devem ser feitas somente através de diretivas.
-* Crie um escopo isolado/independente quando você for desenvolver componentes reutilizáveis.
-
-#Filtros
-
-* Nomeie seus filtros no padrão lowerCamelCase
-* Faça seus filtros o mais leve possível. Eles são chamados frequentemente durante o loop `$digest` então criando filtros lentos você irá atrasar sua aplicação.
-
-#Serviços
-
-* Use camelCase (lower ou upper) para nomear os serviços.
-* Encapsule as 'business logic' nos services.
-* Serviços encapsulando 'business logic' são preferencialmente um `service` ao invez de um`factory`
-* Para cachear a 'session-level' você pode usar `$cacheFactory`. Isto deve ser usado para cachear resultados de requisições ou computações pesadas.
-
-#Templates
-
-* Use `ng-bind` ou `ng-cloak` ao invés de simplesmente `{{ }}` para prevenir conteúdo piscando.
-* Evite escrever código complexo no template.
-
-#Roteamento
-
-* Use `resolve` para solucionar as dependências antes que o 'view' seja mostrado.
diff --git a/README-ru-ru.md b/README-ru-ru.md
deleted file mode 100644
index 248510f..0000000
--- a/README-ru-ru.md
+++ /dev/null
@@ -1,437 +0,0 @@
-# Введение
-
-Цель данного руководства — предоставить набор лучших практик и рекомендаций по стилю для AngularJS приложений.
-
-В работе были использованы следующие источники:
-
-0. Исходный код AngularJS.
-0. Мной прочитанные статьи.
-0. Мой собственный опыт.
-
-**Замечание 1**: это все еще черновик, главная цель которого — это-то, чтобы его развивало сообщество и поэтому восполнение любых пробелов будет принято с благодарностью.
-
-**Замечание 2**: перед использованием рекомендаций, описанных в данном переводе, убедитесь, что они соответствуют текущей версии оригинала.
-
-В этом руководстве вы не найдете общих требований к стилю для разработки на JavaScript. Они есть тут:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-0. [Airbnb JavaScript style guide](https://github.com/airbnb/javascript)
-
-При разработке приложений на AngularJS рекомендуется использовать [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-На wiki странице GitHub репозитория AngularJS есть похожая секция, созданная [ProLoser](https://github.com/ProLoser), которая находится [здесь](https://github.com/angular/angular.js/wiki).
-
-# Содержание
-* [Общие](#general)
- * [Файловая структура](#directory-structure)
- * [Разметка](#markup)
- * [Оптимизация цикла обработки](#optimize-the-digest-cycle)
- * [Другое](#others)
-* [Модули](#modules)
-* [Контроллеры](#controllers)
-* [Директивы](#directives)
-* [Фильтры](#filters)
-* [Сервисы](#services)
-* [Шаблоны](#templates)
-* [Маршрутизация](#routing)
-* [Тестирование](#testing)
-* [Вклад](#contribution)
-
-# Общие
-
-## Файловая структура
-
-Так как большое AngularJS приложение состоит из большого количества компонентов, оптимальный способ их структурирования — иерархия каталогов.
-
-Существует два основных подхода:
-
-* Сперва разделить по типам компонентов, затем по функциональности.
-
-В этом случае структура каталогов будет выглядеть примерно так:
-
- ```
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── home
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── about
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── home
- │ │ │ └── directive1.js
- │ │ └── about
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── home
- │ │ └── about
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── partials
- ├── lib
- └── test
- ```
-
-* Сперва разделить по функциональности, затем по типам компонентов.
-
-Вот как это выглядит:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── home
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── about
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-* Если имя каталога состоит из нескольких слов, используйте разделение в стиле lisp:
-
-```
-app
- ├── app.js
- └── my-complex-module
- ├── controllers
- ├── directives
- ├── filters
- └── services
-```
-
-* При создании директив достаточно удобно будет сложить все связанные с ней файлы (к примеру, шаблоны, CSS/SASS, JavaScript) в один каталог. Если вы решите использовать этот подход, старайтесь придерживаться его во всём проекте.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-Этот подход может сочетаться с любой из описанных выше структур каталогов.
-
-* Существует еще один способ, который немного отличается от описанных выше подходов. Он используется, к примеру, в [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). Его особенность в том, что unit тесты для проверки компонентов находятся в том же каталоге, что и сам компонент. В этом случае при изменении компонента вам не придётся долго искать его тесты. Также, при таком подходе, тесты играют роль документации и показывают примеры использования.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* Файл `app.js` содержит определения маршрутов, конфигурацию и/или начальную инициализацию (если требуется).
-* Каждый JavaScript файл должен содержать только один компонент. Имя файла должно соответствовать названию компонента.
-* Используйте шаблоны для структуры AngularJS проектов, такие как [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Я предпочитаю первую структуру каталогов, в ней гораздо легче найти стандартные компоненты.
-
-Соглашения об именовании компонентов будут описаны в соответствующих секциях.
-
-## Разметка
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Загружайте скрипты как можно позже. Расположите их в самом конце страницы.
-
-```
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-Указывайте директивы после стандартных атрибутов. Так будет проще отделить элементы фреймворка от HTML-разметки (что, в свою очередь, сильно облегчит поддержку).
-
-```
-
-```
-
-Последовательность стандартных HTML атрибутов должна соответствовать следующим [рекомендациям](http://mdo.github.io/code-guide/#html-attribute-order).
-
-## Оптимизация цикла обработки
-
-* Следите (watch) только за теми переменными, где это действительно необходимо (для примера: при использовании real-time коммуникации не вызывайте цикл `$digest` для каждого полученного сообщения).
-* Для контента, который меняется только раз, используйте одноразовые watch, например, [`bindonce`](https://github.com/Pasvaz/bindonce).
-* Сделайте вычисления в `$watch` максимально простыми. Любые сложные вычисления в `$watch` замедляют выполнение всего приложения (цикл `$digest` работает в одном потоке, потому что JavaScript однопоточный).
-* При вызове функции `$timeout` устанавливайте третий параметр в false, если функция обратного вызова не изменяет отслеживаемые переменные. В этом случае `$digest` не будет вызван после выполнения функции.
-
-## Другое
-
-* Используйте:
- * `$timeout` вместо `setTimeout`
- * `$window` вместо `window`
- * `$document` вместо `document`
- * `$http` вместо `$.ajax`
-
-Это сделает ваше тестирование гораздо проще и в некоторых случае убережет от неожиданного поведения (например, если вы забудете `$scope.$apply` в `setTimeout`).
-
-* Автоматизируйте ваши процессы с помощью следующих инструментов:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Используйте промисы (`$q`) взамен callback'ов. Это сделает ваш код более элегантным и чистым, а также спасет от "callback hell".
-* Используйте `$resource` вместо `$http` где это возможно. Более высокий уровень абстракций убережет вас от избыточного кода.
-* Используйте AngularJS pre-minifier (такой, как [ngmin](https://github.com/btford/ngmin) или [ng-annotate](https://github.com/olov/ng-annotate)) для избежания проблем после сжатия скриптов.
-* Не используйте глобальное пространство имён. Разрешайте все зависимости с помощью Dependency Injection.
-* Не захламляйте ваш `$scope`. Добавляйте только те переменные и функции, который будут использованы в шаблонах.
-* Используйте [контроллеры вместо `ngInit`](https://github.com/angular/angular.js/pull/4366/files). Использовать `ngInit` рекомендуется только совместно с директивой `ngRepeat` и только для работы с её служебными свойствами. Во всех остальных случаях `$scope`-переменные должны инициализироваться в контроллерах.
-* Не используйте префикс `$` при определении переменных, свойств и методов. Этот префикс зарезервирован для AngularJS.
-* При перечислении зависимостей сперва указывайте встроенные, потом дополнительные:
-
-```javascript
-module.factory('Service', function ($rootScope, $timeout, MyCustomDependency1, MyCustomDependency2) {
- return {
- //Something
- };
-});
-```
-
-# Модули
-
-* Названия модулей должны соответстовать подходу lowerCamelCase. Для определения иерархии, например, что модуль `b` является подмодулем `a`, используйте пространства имён: `a.b`.
-
-Существует два общих способа для структурирования модулей:
-
-0. По функциональности.
-0. По типу компонента.
-
-На самом деле они не очень то и отличаются, но первый путь выглядит чище. Также если ленивая загрузка модулей будет когда-нибудь реализована (в настоящее время нет в планах AngularJS) — это бы улучшило производительность приложения.
-
-# Контроллеры
-* Не работайте с DOM из контроллеров, это усложнит их тестирование, а также нарушит [Принцип разделения ответственности](https://en.wikipedia.org/wiki/Separation_of_concerns). Используйте для этого директивы.
-* Именовать контроллер следует так, чтобы его имя состояло из части, описывающей то, чем он занимается (для примера: корзина, домашняя страница, админ-панель) и постфикса `Ctrl`. Имена контроллеров записываются в UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, и т.д.).
-* Контроллеры не должны быть объявлены в глобальном пространстве (хотя AngularJS и позволяет использовать этот подход, он засоряет глобальное пространство имён, а потому считается нежелательным).
-* Используйте синтаксис массивов для объявления контроллеров:
-
-```JavaScript
-module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
-}]);
-```
-
-Этот подход избавляет от проблем с минификацией файлов. Вы можете автоматически сгенерировать определение с синтаксисом массива используя инструмент такой, как [ng-annotate](https://github.com/olov/ng-annotate) (и задачи для grunt [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-
-* Используйте оригинальные имена для зависимостей контроллера. Код будет более читабельным:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function (s) {
- //...body
-}]);
-```
-
-Читается гораздо хуже, чем:
-
-```JavaScript
-module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
-}]);
-```
-
-Особенно это актуально для больших файлов со множеством строк кода, который придется проскролить весь, чтобы понять, что есть что. В итоге можно легко забыть, какой зависимости отвечает та или иная переменная.
-
-* Держите контроллеры настолько маленькими на сколько это возможно. Вынесите общие функции в сервисы.
-* Организовывайте коммуникацию между контроллерами используя вызовы методов (например когда дети хотят связаться с родителями) или методы `$emit`, `$broadcast` и `$on`. Количество `$emit`, `$broadcast` сообщений должно быть сведено к минимуму.
-* Создайте и поддерживайте список со всеми сообщениями пересылаемыми с помощью `$emit`, `$broadcast`, чтобы избежать коллизий имён и прочих возможных ошибок.
-* Если вам нужно отформатировать данные, перенесите логику форматирования в [фильтр](#filters) и укажите его как зависимость:
-
-```JavaScript
-module.filter('myFormat', function () {
- return function () {
- //body...
- };
-});
-
-module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
-}]);
-```
-
-* При использовании вложенных контроллеров не забывайте про "nested scoping" (синтаксис `controllerAs`):
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```
-
-```
-
-# Директивы
-
-* Называйте ваши директивы используя lowerCamelCase.
-* Используйте `scope` вместо `$scope` в функции `link`. При использовании функций compile, post/pre link им будут переданы предопределённые аргументы, которые нельзя будет изменить, используя DI. Такой стиль используется и внутри самого AngularJS.
-* Используйте кастомные префиксы для ваших директив во избежание коллизий со сторонними библиотеками.
-* Не используйте префиксы `ng` или `ui`, так как они зарезервированы для использования в AngularJS и AngularJS UI.
-* Манипуляции с DOM должны производиться только с помощью директив.
-* Создавайте изолированный scope когда вы разрабатываете переиспользуемые компоненты.
-* Определяйте директивы через атрибуты или элементы, не используйте для этого классы или комментарии. Код будет куда более читабельным.
-* Делайте `$scope.$on('$destroy', fn)` для очистки. Особенно актуально при оборачивании сторонних плагинов в директивы.
-* Не забывайте про `$sce`, когда работаете с непроверенным контентом.
-
-# Фильтры
-
-* Называйте ваши фильтры используя lowerCamelCase.
-* Сохраняйте ваши фильтры настолько простыми насколько это возможно. Они часто вызываются во время `$digest` цикла, так что медленный фильтр тормозит все приложение.
-* Один фильтр - одно простое действие. Несколько действий - несколько фильтров через `|`.
-
-# Сервисы
-
-В этой секции описывается информация о сервисах в AngularJS вне зависимости от способа определения (например, `.factory`, `.service`), если не сказано обратное.
-
-* Используйте camelCase при определении имён сервисов.
- * UpperCamelCase (PascalCase) должен использоваться для сервисов, используемых в качестве конструкторов:
-
- ```JavaScript
- module.controller('MainCtrl', function ($scope, User) {
- $scope.user = new User('foo', 42);
- });
-
- module.factory('User', function () {
- return function User(name, age) {
- this.name = name;
- this.age = age;
- };
- });
- ```
-
- * lowerCamelCase для всех остальных сервисов.
-
-* Вся бизнес-логика должна определяеться в сервисах.
-* При описании "классов" используйте `service` или `factory`. Единого мнения пока нет, обсуждение идёт [здесь](mgechev/angularjs-style-guide#63)
-* Для кеширования на уровне сессии можно использовать `$cacheFactory`. Этот метод подходит для кеширования результатов сложных вычислений или каких-либо запросов.
-* Если сервис нуждается в настройке при старте приложения, определяйте его через `provider`, а затем конфигурируйте через коллбек `config`:
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-# Шаблоны
-
-* Используйте `ng-bind` или `ng-cloak` вместо простого `{{ }}`, чтоб не показывать выражения до обработки их AngularJS.
-* Избегайте написания сложного кода в шаблонах.
-* Когда вам нужно динамически установить атрибут `src` у картинки, используйте `ng-src` вместо `src` с `{{ }}` внутри.
-* Когда вам нужно динамически установить атрибут `href` в теге ссылки, используйте `ng-href` вместо `href` с `{{ }}` внутри.
-* Вместо использования строковой переменной в scope и использовании ее в атрибуте `style` через шаблон `{{ }}`, используйте директиву `ng-style` с объектом в scope переменной, как значение:
-
-```HTML
-
-
-
my beautifully styled div which will work in IE
;
-```
-
-# Маршрутизация
-
-* Используйте `resolve` для разрешения зависимостей перед тем, как представление будет показано.
-* Избегайте использования REST-запросов внутри `resolve`. Запросы должны размещаться в соответствующих сервисах. Это позволит использовать кеширование, а также следовать принципу разделения ответственности (Separation of concerns).
-
-# Тестирование
-
-TBD
-
-Пока эта секция не готова, можно использовать [эти рекомендации](https://github.com/daniellmb/angular-test-patterns).
-
-# Вклад
-
-Поскольку это руководство должно писаться сообществом, любой вклад в его развитие крайне приветствуется.
-К примеру, вы можете заняться секцией "Тестирование" или переводом всего документа на ваш язык.
diff --git a/README-sr-lat.md b/README-sr-lat.md
deleted file mode 100644
index 892c4f8..0000000
--- a/README-sr-lat.md
+++ /dev/null
@@ -1,270 +0,0 @@
-#Uvod
-
-Cilj ovog "style guide" vodiča je da predstavi set najboljih praksi i smernica za jednu AngularJS aplikaciju.
-Ove najbolje prakse su prikupljene od:
-
-0. AngularJS izvornog koda
-0. Izvornog koda ili članaka koje sam pročitao
-0. Ličnog iskustva
-
-**Nota**: ovo je još uvek radna verzija, njen glavni cilj je da bude "community-driven" zato ispunjavanje praznina će biti veoma cenjeno od strane cele zajednice.
-
-U ovom vodiču nećete naći uobičajene preporuke za JavaScript programiranje. Takve se mogu naći na:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-
-Za AngularJS razvoj preporučen je [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-Na AngularJS's GitHub wiki-u postoji slična sekcija od [ProLoser](https://github.com/ProLoser), možete je naći na [here](https://github.com/angular/angular.js/wiki).
-
-#Sadržaj
-* [Uopšteno](#uopšteno)
- * [Struktura Direktorijuma](#struktura-direktorijuma)
- * [Optimizuj ciklus obrade](#optimizuj-ciklus-obrade)
- * [Ostalo](#ostalo)
-* [Moduli](#moduli)
-* [Kontroleri](#kontroleri)
-* [Direktive](#direktive)
-* [Filteri](#filteri)
-* [Servisi](#servisi)
-* [Šabloni](#šabloni)
-* [Rutiranje](#rutiranje)
-
-#Uopšteno
-
-## Struktura Direktorijuma
-
-Kako velike AngularJS aplikacije imaju mnogo komponenti najbolje je da se iste organizuju u strukturi direktorijuma.
-Postoje dva pristupa:
-
-* Kreiranje primarnog grupisanja prema tipu komponente a zatim sekundarno grupisanje prema funkcionalnosti.
-
-U ovom slučaju struktura direktorijuma bi izgledala ovako:
-
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── page1
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── page2
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── page1
- │ │ │ └── directive1.js
- │ │ └── page2
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── page1
- │ │ └── page2
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── lib
- └── test
-
-* Kreiranje primarnog grupisanja prema funkcionalnosti a zatim sekundarno grupisanje prema tipu komponente.
-
-Ovde je njen raspored:
-
- .
- ├── app
- │ ├── app.js
- │ ├── common
- │ │ ├── controllers
- │ │ ├── directives
- │ │ ├── filters
- │ │ └── services
- │ ├── page1
- │ │ ├── controllers
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ ├── directives
- │ │ │ └── directive1.js
- │ │ ├── filters
- │ │ │ ├── filter1.js
- │ │ │ └── filter2.js
- │ │ └── services
- │ │ ├── service1.js
- │ │ └── service2.js
- │ └── page2
- │ ├── controllers
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ └── filter3.js
- │ └── services
- │ └── service3.js
- ├── lib
- └── test
-
-* Kada kreirate direktivu može biti korisno da se stave sve povezane datoteke sa datom direktivom (n.p. šabloni, CSS/SASS datoteke, JavaScript) u jedan direktorijum. Ako izaberete ovaj stil budite kozistentni i koristite ga svuda u vašem projektu.
-
- app
- └── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-
-Ovaj pristup se moze kombinovati sa obe verzije gornje strukture direktorijuma.
-* Još jedna blaga varijacija na obe strukture direktorijuma je ona korišćena u [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). U njoj "unit" testovi za datu komponentu se nalaze u istom direktorijumu kao i sama komponenta. Na ovaj način kada napravite neku promenu u datoj komponenti lakše je naći odgovarajuće testove, testovi takođe služe kao dokumentacija i prikazuju "uses cases".
-
- services
- ├── cache
- │ ├── cache1.js
- │ └── cache1.spec.js
- └── models
- ├── model1.js
- └── model1.spec.js
-
-* Datoteka `app.js` sadrži definiciju ruta, konfiguraciju i/ili "manual bootstrap" (ukoliko je neophodan).
-* Svaka JavaScript datoteka trebalo bi da sadrži samo jednu komponentu. Datoteka bi trebalo da bude imenovana prema imenu komponente.
-* Koristi šablon strukture Angular projekta kao [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Ja više preferiram prvu strukturu jer omogućava lakse pronalaženje uobičajenih komponenti.
-
-Konvencije oko imenovanje komponenti se mogu naći u svakoj sekciji koja opisuje datu komponentu.
-
-## Optimizuj ciklus obrade
-
-* Posmatraj samo najznačajnije promenjive (na primer: kada se koristi "real-time" komunikacija, ne pozivaj petlju obrade u svakoj primljenoj poruci).
-* Pravi proračune u `$watch` što je moguće jednostavnijim. Postavljanje zahtevne i spore kalkulacije u jednom `$watch` će usporiti celokupnu aplikaciju ($digest petlja se izvršava u jednoj niti iz razloga "single-threaded" prirode JavaScript-a).
-
-## Ostalo
-
-* Koristi:
- * `$timeout` umesto `setTimeout`
- * `$window` umesto `window`
- * `$document` umesto `document`
- * `$http` umesto `$.ajax`
-
-Ovo će učiniti testiranje mnogo lakšim a u nekim slučajevima i preduprediti neočekivano ponašanje (na primer, ako ste propustili `$scope.$apply` u `setTimeout`).
-
-* Automatizujte vaš proces rada koristeći alate kao što su:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Koristite "promises" (`$q`) umesto "callbacks". Ovo će učiniti da vaš kod izgleda elegantnije, i sačuvaće vas od "callback" pakla.
-* Koristite `$resource` umesto `$http` kad god je to moguće. Viši nivo abstrakcije spašava vas od nepotrebnog viška.
-* Koristite AngularJS "pre-minifier" (like [ngmin](https://github.com/btford/ngmin) ili [ng-annotate](https://github.com/olov/ng-annotate)) kao prevenciju problema posle "minification".
-* Ne koristite globalne promenjive. Razrešite sve zavisnosti koristeći "Dependency Injection".
-* Ne zagađujte vaš `$scope`. Dodajte samo one funkcije ili promenjive koje se koriste unutar datog šablona.
-* Koristite kontrolere umesto `ngInit`.
-
-#Moduli
-
-Postoje dva uobičajena načina da se struktuiraju moduli:
-
-0. Prema funkcionalnosti
-0. Prema tipu komponente
-
-Trenutno nema veće razlike, ali prvi način izgleda urednije. Takođe, ako "lazy-loading" moduli su implementirani (trenutno nisu u AngularJS planu razvoja), to će poboljšati performanse applikacije.
-
-#Kontroleri
-
-* Ne menjajte DOM u vašim kontrolerima. Umesto toga koristite direktive.
-* Imenovanje kontrolera se vrši prema njegovoj funkcionalnosti (na primer: shopping cart, homepage, admin panel) i dodatka `Ctrl` na kraju imena. Imena kontrolera su zapiasna u "UpperCamelCase" formatu (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, itd.).
-* Kontroleri ne bi trebalo da budu definisani kao globalni (bez obzira što AngularJS to dozvoljava, loša je praksa da se zagadi global "namespace").
-* Koristi syntaksu niza u definiciji kontrolera:
-
-
-
- module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
- }]);
-
-
-Korišćenje ovog tipa definicija izbegava probleme sa "minification". Možete automatski generisati niz definicija od jedne standardne koristeći alate kao što su [ng-annotate](https://github.com/olov/ng-annotate) (i grunt zadatak [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* Koristite originalne nazive zavisnosti kontrolera. Ovo će vam pomoći da proizvedete čitljiviji kod:
-
-
-
- module.controller('MyCtrl', ['$scope', function (s) {
- //...body
- }]);
-
-
-je manje čitljivo od:
-
-
- module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
- }]);
-
-
-Ovo je posebno primenjivo na datoteku koja ima toliko koda da ćete morati da se vertikalno krećete kroz isti. Ovo će najverovatnije dovesti do toga da zaboravite koja je promenjiva vezana za koju zavisnost.
-
-* Kreirajte što je moguće "tanje" kontrolere. Abstraktujte često korišćene funkcije u servis.
-* Komunicirajte unutar različitih kontorlera korišćenjem pozivanjem metoda (moguće kada deca žele da komuniciraju sa roditeljima) ili `$emit`, `$broadcast` i `$on` metode. "Emitted" i "broadcasted" poruke treba držati na minimumu.
-* Napravite listu svih poruka koje se prenose korišćenjem `$emit`, `$broadcast` i pažljivo ih održavajte iz razloga kolizije naziva i mogućih grešaka.
-* Kada je potrebno da formatirate podatke enkapsulirajte logiku formatiranja unutar [filtera](#filteri) i deklarišite ih kao zavisnost:
-
-
- module.filter('myFormat', function () {
- return function () {
- //body...
- };
- });
-
- module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
- }]);
-
-#Direktive
-
-* Imenujte svoje direktive koristeći "lowerCamelCase"
-* Koristite `scope` umesto `$scope` u vašoj "link" funkciji. U "compile", post/pre "link" funkcijama već ste definisali argumente koji će biti prosleđeni prilikom poziva funkcije, nećete moći da ih promenite koristeći DI (Dependency Injection). Ovaj stil je takođe korišćen unutar AngularJS izvornog koda.
-* Koristite "custom" prefikse za vaše direktive da bi sprečili koliziju imena sa tuđim bibljotekama.
-* Nemojte koristiti `ng` ili `ui` prefikse jer su ovi rezervisani za AngularJS i AngularJS UI upotrebu.
-* DOM manipulacije moraju biti izvršene samo kroz direktive.
-* Kreirajte izlovoano područje kada razvijate komponente za višestruku upotrebu.
-
-#Filteri
-
-* Imenujte vaše filtere koristeći "lowerCamelCase"
-* Kreirajte vaše filtere što je moguće "lakšim". Oni se zovu često tokom `$digest` petlje pa kreiranje sporih filtera će usporiti vašu aplikaciju.
-
-#Servisi
-
-* Koristite "camelCase (lower or upper)" za nazive vaših servisa.
-* Enkapsulirajte biznis logiku unutar servisa.
-* Servisi koji uokviruju biznis logiku su poželjno `service` umesto `factory`
-* Za "session-level" keš možete koristiti `$cacheFactory`. Ovo bi trebalo koristiti za keširanje rezultata zahteva ili kompleksnih proračuna.
-
-#Šabloni
-
-* Koristite `ng-bind` ili `ng-cloak` umesto prostog `{{ }}` da bi sprečili treptanje sadržaja.
-* Izbegavajte pisanje kompleksnog koda unutar šablona.
-* Kada je potrebno da dinamički postavitre `src` slike koristite `ng-src` umesto `src` sa `{{}}` šablonom.
-* Umesto korišćenja "scope" promenjive kao tekst i koristiti ga sa `style` atributom sa `{{ }}`, koristite direktivu `ng-style` sa "object-like" parametrima i "scope" promenjive kao vrednosti:
-
- ...
- $scope.divStyle = {
- width: 200,
- position: 'relative'
- };
- ...
-
-
my beautifully styled div which will work in IE
;
-
-#Rutiranje
-
-* Koristite `resolve` da razložite zavisnosti pre nego se prikaže "view".
diff --git a/README-sr.md b/README-sr.md
deleted file mode 100644
index f79381b..0000000
--- a/README-sr.md
+++ /dev/null
@@ -1,270 +0,0 @@
-#Увод
-
-Циљ овог "style guide" водича је да се представи сет најбољих пракси и смерница за једну AngularJS апликацију.
-Ове најбоље праксе су прикупљене од:
-
-0. AngularJS ижворног кода
-0. Изворног кода или чланака које сам прочитао
-0. Личног искуства
-
-**Нота**: ово је још увек радна верзија, њен главни циљ је да буде "community-driven" зато ће испуњавање празнина бити веома цењено од стране целе заједнице.
-
-У овом водичу нећете наћи уобичајене препоруке за JavaScript програмирање. Такве се могу наћи на:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-
-За AngularJS развој препоручен је [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-На AngularJS's GitHub wiki-у постоји слична секција од [ProLoser](https://github.com/ProLoser), možete je naći na [here](https://github.com/angular/angular.js/wiki).
-
-#Садржај
-* [Уопштено](#уопштено)
- * [Структура Директоријума](#структура-директоријума)
- * [Оптимизуј циклус обраде](#оптимизуј-циклус-обраде)
- * [Остало](#остало)
-* [Модули](#модули)
-* [контролери](#контролери)
-* [Директиве](#директиве)
-* [Филтери](#филтери)
-* [Сервиси](#сервиси)
-* [Шаблони](#шаблони)
-* [Рутирање](#рутирање)
-
-#Уопштено
-
-## Структура Директоријума
-
-Како велике AngularJS апликације имају много компоненти најбоље је да се исте организују у структури директоријума.
-Постоје два приступа:
-
-* Креирање примарног груписања према типу компоненте а затиим секундарно груписање према функционалности.
-
-У овом случају структура директоријума би изгледала овако:
-
- .
- ├── app
- │ ├── app.js
- │ ├── controllers
- │ │ ├── page1
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ └── page2
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── page1
- │ │ │ └── directive1.js
- │ │ └── page2
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ ├── page1
- │ │ └── page2
- │ └── services
- │ ├── CommonService.js
- │ ├── cache
- │ │ ├── Cache1.js
- │ │ └── Cache2.js
- │ └── models
- │ ├── Model1.js
- │ └── Model2.js
- ├── lib
- └── test
-
-* Креиранје примарног груписања према функционалнисти а затим секундарно груписање према типу компоненте.
-
-Овде је њен респоред:
-
- .
- ├── app
- │ ├── app.js
- │ ├── common
- │ │ ├── controllers
- │ │ ├── directives
- │ │ ├── filters
- │ │ └── services
- │ ├── page1
- │ │ ├── controllers
- │ │ │ ├── FirstCtrl.js
- │ │ │ └── SecondCtrl.js
- │ │ ├── directives
- │ │ │ └── directive1.js
- │ │ ├── filters
- │ │ │ ├── filter1.js
- │ │ │ └── filter2.js
- │ │ └── services
- │ │ ├── service1.js
- │ │ └── service2.js
- │ └── page2
- │ ├── controllers
- │ │ └── ThirdCtrl.js
- │ ├── directives
- │ │ ├── directive2.js
- │ │ └── directive3.js
- │ ├── filters
- │ │ └── filter3.js
- │ └── services
- │ └── service3.js
- ├── lib
- └── test
-
-* Када креирате директиву може бити корисно да се ставе све повезане датотеке са датом директивом (н.п. шаблони, CSS/SASS датотеке, JavaScript) у један директоријум. Ако изаберете овај стил будите козистентни и користите га свуда у вашем пројекту.
-
- app
- └── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-
-Овај приступ се може комбиновати са обе верзије структуре директоријума.
-* Још једна блага варијација на обе структуре директоријума је она коришћена у [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home). У њој "unit" тестови за дату компоненту се налазе з истом директоријуму као и сама компонента. На овај начин када направите неку промену у датој компоненти лакше је наћи одговарајуће тестове, тестови такође служе као документација и приказују "uses cases".
-
- services
- ├── cache
- │ ├── cache1.js
- │ └── cache1.spec.js
- └── models
- ├── model1.js
- └── model1.spec.js
-
-* Датотека `app.js` садржи дефиницију рута, конфигурацију и/или "manual bootstrap" (уколико је наопходан).
-* Свака JavaScript датотека требало би да садржи само једну компоненту. Датотека би требало да буде именована према имену компоненте.
-* Користи шаблон структуре Angular пројекта као [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Ја више преферирам прву структуру јер омогућава лакше пробналажење уобичајених компоненти.
-
-Конвенције око именовања компоненти се могу наћи у свакој секцији која описује дату компоненту.
-
-## Оптимизуј циклус обраде
-
-* Посматрај само најзначајније промењиве (на пример: када се користи "real-time" комуникације, не позивај петљу обраде у свакој примљеној поруци).
-* Прави прорачуне у `$watch` што је могуће једноставнијим. постављање захтевне и споре калкулације у једном `$watch` ће успорити целокупну апликацију ($digest петља се извршава у једној нити из разлога "single-threaded" природе JavaScript-а).
-
-## Остало
-
-* Користи:
- * `$timeout` уместо `setTimeout`
- * `$window` уместо `window`
- * `$document` уместо `document`
- * `$http` уместо `$.ajax`
-
-Ово ће учинити тестирање много лакшим а у неким случајевима и предупредити неочекивано понашање (на пример, ако сте пропустили `$scope.$apply` у `setTimeout`).
-
-* Аутоматизујте ваш процес рада користећи алате као штоп су:
- * [Yeoman](http://yeoman.io)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Користите "promises" (`$q`) уместо "callbacks". Ово ће учинити да ваш код изгледа елегантније, и сачуваће вас од "callback" пакла.
-* Користите `$resource` уместо `$http` кад год је могуће. Виши ниво абстракције спашава вас од непотребног вишка.
-* Користите AngularJS "pre-minifier" (like [ngmin](https://github.com/btford/ngmin) или [ng-annotate](https://github.com/olov/ng-annotate)) као превенцију проблема после "minification".
-* Не користите глобалне промењиве. Разрешите све зависности користећи "Dependency Injection".
-* Не загађујте ваш `$scope`. Додајте смо оне функције или промењиве које се користе унутар датог шаблона.
-* Користите контролере уместо `ngInit`.
-
-#Модули
-
-Постоје два уобичајена начина да се структуирају модули:
-
-0. Према функционалности
-0. Према типу компоненте
-
-Тренутно нема веће разлике, али први начин изгледа уредније. Такође, ако "lazy-loading" модули су имплементирани (тренутно нису у AngularJS плану развоја), то ће побољшати перформансе апликације.
-
-#Контролери
-
-* Немењајте DOM у вашим контролеримаu. Уместо тога користите директиве.
-* Именовање контролера се врши према његовој функционалности (на пример: shopping cart, homepage, admin panel) и додатке `Ctrl` на крају имена. Имена контролера су записана у "UpperCamelCase" формату (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, итд.).
-* Контролери не би требало да буду дефинисани као глобални (без обзира што AngularJS то дозвољаве, лоша је пракса да се загади глобални "namespace").
-* Користи синтаксу низа з дефиницији контролера:
-
-
-
- module.controller('MyCtrl', ['dependency1', 'dependency2', ..., 'dependencyn', function (dependency1, dependency2, ..., dependencyn) {
- //...body
- }]);
-
-
-Коришћење овог типа дефиниција избегава проблеме са "minification". Можете аутоматски генерисати низ дефиниција од једне стандардне користећи алате као што су [ng-annotate](https://github.com/olov/ng-annotate) (и grunt задатак [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* Користите оригиналне називе зависности контролера. Ово ће вам помоћи да произведете читљивији код:
-
-
-
- module.controller('MyCtrl', ['$scope', function (s) {
- //...body
- }]);
-
-
-је мање читљиво од:
-
-
- module.controller('MyCtrl', ['$scope', function ($scope) {
- //...body
- }]);
-
-
-Ово је посебно примењиво да датотеку која има толико кода да ћете морати да се вертикално крећете кроз исти. Ово ће највероватније довести до тога да заборавите која је промењива везана за коју зависност.
-
-* Креирајте што је могуће "тање" контролере. Абстракујте често коришћене функције у сервис.
-* комуницирајте унутар различитих контролера коришћењем позивање метода (когуће када деца желе да комуницирају са родитељима) или `$emit`, `$broadcast` i `$on` методе. "Emitted" и "broadcasted" поруке треба држати на минимуму.
-* Направите листу свих порука које се преносе коришћењем `$emit`, `$broadcast` и пажљиво их одржавајте из разлога колизије назива и могућих грешака.
-* Када је потребно да форматирате податке енкапсулирајте логику форматирања унутар [филтера](#филтери) и декларишите их као зависности:
-
-
- module.filter('myFormat', function () {
- return function () {
- //body...
- };
- });
-
- module.controller('MyCtrl', ['$scope', 'myFormatFilter', function ($scope, myFormatFilter) {
- //body...
- }]);
-
-#Директиве
-
-* Именујте своје директиве користећи "lowerCamelCase"
-* Користите `scope` уместо `$scope` у вашој "link" функцији. у "compile", пост/пре "link" функцијама већ сте дефинисали аргументе који це бити прослеђени приликом позива функције, нећете моћи да их промените користећи "DI" (Dependency Injection). Овај стил је такође коришћен унутар AngularJS изворног кода.
-* Користите "custom" префиксе за ваше директиве да би спречили колизију имена са туђим бибљотекама.
-* Немојте користити `ng` или `ui` префиксе јер су ови резервисани за AngularJS и AngularJS UI употребу.
-* DOM манипулације морају бити извршене само кроз директиве.
-* Креирајте изоловано подручје када развијате компоненте за вишеструку употребу.
-
-#Филтери
-
-* Именујте ваше филтере користећи "lowerCamelCase"
-* Креирајте ваше филтере што је могуће "лакшим". Они се зову често током `$digest` петље па креирање спорих филтера ће успорити вашу апликацију.
-
-#Сервиси
-
-* Користите "camelCase (lower or upper)" за називе ваших сервиса.
-* енкапсулирајте бизнис логику унутар сервиса.
-* Сервиси који уоквирују бизнис логику су пожељно `service` уместо `factory`
-* За "session-level" кеш можете користити `$cacheFactory`. Ово би требало користити за кеширање резултата захтева или комплексних прорачуна.
-
-#Шаблони
-
-* Користите `ng-bind` или `ng-cloak` уместо простог `{{ }}` да би спречили трептање садржаја.
-* Избегавајте писање комплексног кода унутар шаблона.
-* Када је потребно да динамички поставите `src` слике користите `ng-src` уместо `src` са `{{}}` шаблоном.
-* Уместо коришћења "scope" промењиве као текст и користити га заједно са `style` атрибутом са atributom и `{{ }}`, користите директиву `ng-style` са "object-like" параметрима и "scope" промењиве као вредности:
-
- ...
- $scope.divStyle = {
- width: 200,
- position: 'relative'
- };
- ...
-
-
;
-
-# 路由
-
-* 在视图展示之前通过 `resolve` 解决依赖。
diff --git a/README.md b/README.md
deleted file mode 100644
index 48b22c1..0000000
--- a/README.md
+++ /dev/null
@@ -1,519 +0,0 @@
-[](https://gitter.im/mgechev/angularjs-style-guide?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-# Introduction
-
-The goal of this style guide is to present a set of best practices and style guidelines for one AngularJS application.
-These best practices are collected from:
-
-0. AngularJS source code
-0. Source code or articles I've read
-0. My own experience
-
-**Note 1**: this is still a draft of the style guide, its main goal is to be community-driven so filling the gaps will be greatly appreciated by the whole community.
-
-**Note 2**: before following any of the guidelines in the translations of the English document, make sure they are up-to date. The latest version of the AngularJS style guide is in the current document.
-
-In this style guide you won't find common guidelines for JavaScript development. Such can be found at:
-
-0. [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml)
-0. [Mozilla's JavaScript style guide](https://developer.mozilla.org/en-US/docs/Developer_Guide/Coding_Style)
-0. [GitHub's JavaScript style guide](https://github.com/styleguide/javascript)
-0. [Douglas Crockford's JavaScript style guide](http://javascript.crockford.com/code.html)
-0. [Airbnb JavaScript style guide](https://github.com/airbnb/javascript)
-
-For AngularJS development recommended is the [Google's JavaScript style guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml).
-
-In AngularJS's GitHub wiki there is a similar section by [ProLoser](https://github.com/ProLoser), you can check it [here](https://github.com/angular/angular.js/wiki).
-
-# Table of content
-* [General](#general)
- * [Directory structure](#directory-structure)
- * [Markup](#markup)
- * [Optimize the digest cycle](#optimize-the-digest-cycle)
- * [Others](#others)
-* [Modules](#modules)
-* [Controllers](#controllers)
-* [Directives](#directives)
-* [Filters](#filters)
-* [Services](#services)
-* [Templates](#templates)
-* [Routing](#routing)
-* [i18n](#i18n)
-* [Contribution](#contribution)
-* [Contributors](#contributors)
-
-# General
-
-## Directory structure
-
-Since a large AngularJS application has many components it's best to structure it in a directory hierarchy.
-There are two main approaches:
-
-* Creating high-level divisions by component types and lower-level divisions by functionality.
-
-In this way the directory structure will look like:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── controllers
-│ │ ├── home
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ └── about
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── home
-│ │ │ └── directive1.js
-│ │ └── about
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ ├── home
-│ │ └── about
-│ └── services
-│ ├── CommonService.js
-│ ├── cache
-│ │ ├── Cache1.js
-│ │ └── Cache2.js
-│ └── models
-│ ├── Model1.js
-│ └── Model2.js
-├── partials
-├── lib
-└── test
-```
-
-* Creating high-level divisions by functionality and lower-level divisions by component types.
-
-Here is its layout:
-
-```
-.
-├── app
-│ ├── app.js
-│ ├── common
-│ │ ├── controllers
-│ │ ├── directives
-│ │ ├── filters
-│ │ └── services
-│ ├── home
-│ │ ├── controllers
-│ │ │ ├── FirstCtrl.js
-│ │ │ └── SecondCtrl.js
-│ │ ├── directives
-│ │ │ └── directive1.js
-│ │ ├── filters
-│ │ │ ├── filter1.js
-│ │ │ └── filter2.js
-│ │ └── services
-│ │ ├── service1.js
-│ │ └── service2.js
-│ └── about
-│ ├── controllers
-│ │ └── ThirdCtrl.js
-│ ├── directives
-│ │ ├── directive2.js
-│ │ └── directive3.js
-│ ├── filters
-│ │ └── filter3.js
-│ └── services
-│ └── service3.js
-├── partials
-├── lib
-└── test
-```
-
-* In case the directory name contains multiple words, use lisp-case syntax:
-
-```
-app
- ├── app.js
- └── my-complex-module
- ├── controllers
- ├── directives
- ├── filters
- └── services
-```
-
-* Put all the files associated with the given directive (i.e. templates, CSS/SASS files, JavaScript) in a single folder. If you choose to use this style be consistent and use it everywhere along your project.
-
-```
-app
-└── directives
- ├── directive1
- │ ├── directive1.html
- │ ├── directive1.js
- │ └── directive1.sass
- └── directive2
- ├── directive2.html
- ├── directive2.js
- └── directive2.sass
-```
-
-This approach can be combined with both directory structures above.
-* The unit tests for a given component should be located in the directory where the component is. This way when you make changes to a given component finding its test is easy. The tests also act as documentation and show use cases.
-
-```
-services
-├── cache
-│ ├── cache1.js
-│ └── cache1.spec.js
-└── models
- ├── model1.js
- └── model1.spec.js
-```
-
-* The `app.js` file should contains route definitions, configuration and/or manual bootstrap (if required).
-* Each JavaScript file should only hold **a single component**. The file should be named with the component's name.
-* Use AngularJS project structure template like [Yeoman](http://yeoman.io), [ng-boilerplate](http://joshdmiller.github.io/ng-boilerplate/#/home).
-
-Conventions about component naming can be found in each component section.
-
-## Markup
-
-[TLDR;](http://developer.yahoo.com/blogs/ydn/high-performance-sites-rule-6-move-scripts-bottom-7200.html) Put the scripts at the bottom.
-
-```
-
-
-
-
- MyApp
-
-
-
-
-
-
-
-
-
-```
-
-Keep things simple and put AngularJS specific directives later. This way is easy to look to the code and find enhanced HTML by the framework (what improve the maintainibility).
-
-```
-
-```
-
-Other HTML atributes should follow the Code Guide's [recommendation](http://mdo.github.io/code-guide/#html-attribute-order)
-
-## Optimize the digest cycle
-
-* Watch only the most vital variables. When required to invoke the `$digest` loop explicitly (it should happen only in exceptional cases), invoke it only when required (for example: when using real-time communication, don't cause a `$digest` loop in each received message).
-* For content that is initialized only once and then never changed, use single-time watchers like [`bindonce`](https://github.com/Pasvaz/bindonce) for older versions of AngularJS or one-time bindings in AngularJS >=1.3.0.
-* Make the computations in `$watch` as simple as possible. Making heavy and slow computations in a single `$watch` will slow down the whole application (the `$digest` loop is done in a single thread because of the single-threaded nature of JavaScript).
-* When watching collections, do not watch them deeply when not strongly required. Better use `$watchCollection`, which performs a shallow check for equility of the result of the watched expression and the previous value of the expression's evaluation.
-* Set third parameter in `$timeout` function to false to skip the `$digest` loop when no watched variables are impacted by the invocation of the `$timeout` callback function.
-* When dealing with big collections, which change rarely, [use immutable data structures](http://blog.mgechev.com/2015/03/02/immutability-in-angularjs-immutablejs/).
-
-## Others
-
-* Use:
- * `$timeout` instead of `setTimeout`
- * `$interval` instead of `setInterval`
- * `$window` instead of `window`
- * `$document` instead of `document`
- * `$http` instead of `$.ajax`
-
-This will make your testing easier and in some cases prevent unexpected behaviour (for example, if you missed `$scope.$apply` in `setTimeout`).
-
-* Automate your workflow using tools like:
- * [Yeoman](http://yeoman.io)
- * [Gulp](http://gulpjs.com)
- * [Grunt](http://gruntjs.com)
- * [Bower](http://bower.io)
-
-* Use promises (`$q`) instead of callbacks. It will make your code look more elegant and clean, and save you from callback hell.
-* Use `$resource` instead of `$http` when possible. The higher level of abstraction will save you from redundancy.
-* Use an AngularJS pre-minifier ([ng-annotate](https://github.com/olov/ng-annotate)) for preventing problems after minification.
-* Don't use globals. Resolve all dependencies using Dependency Injection, this will prevent bugs and monkey patching when testing.
-* Do not pollute your `$scope`. Only add functions and variables that are being used in the templates.
-* Prefer the usage of [controllers instead of `ngInit`](https://github.com/angular/angular.js/pull/4366/files). The only appropriate use of `ngInit` is for aliasing special properties of `ngRepeat`. Besides this case, you should use controllers rather than `ngInit` to initialize values on a scope.
-* Do not use `$` prefix for the names of variables, properties and methods. This prefix is reserved for AngularJS usage.
-* When resolving dependencies through the DI mechanism of AngularJS, sort the dependencies by their type - the built-in AngularJS dependencies should be first, followed by your custom ones:
-
-```javascript
-module.factory('Service', function ($rootScope, $timeout, MyCustomDependency1, MyCustomDependency2) {
- return {
- //Something
- };
-});
-```
-
-# Modules
-
-* Modules should be named with lowerCamelCase. For indicating that module `b` is submodule of module `a` you can nest them by using namespacing like: `a.b`.
-
-There are two common ways for structuring the modules:
-
-0. By functionality
-0. By component type
-
-Currently there's not a big difference, but the first way looks cleaner. Also, if lazy-loading modules is implemented (currently not in the AngularJS roadmap), it will improve the app's performance.
-
-# Controllers
-
-* Do not manipulate DOM in your controllers, this will make your controllers harder for testing and will violate the [Separation of Concerns principle](https://en.wikipedia.org/wiki/Separation_of_concerns). Use directives instead.
-* The naming of the controller is done using the controller's functionality (for example shopping cart, homepage, admin panel) and the substring `Ctrl` in the end. The controllers are named UpperCamelCase (`HomePageCtrl`, `ShoppingCartCtrl`, `AdminPanelCtrl`, etc.).
-* The controllers should not be defined as globals (even though AngularJS allows this, it is a bad practice to pollute the global namespace).
-* Use the following syntax for defining controllers:
-
-```JavaScript
-function MyCtrl(dependency1, dependency2, ..., dependencyn) {
- // ...
-}
-module.controller('MyCtrl', MyCtrl);
-```
-
-In order to prevent problems with minification, you can automatically generate the array definition syntax from the standard one using tools like [ng-annotate](https://github.com/olov/ng-annotate) (and grunt task [grunt-ng-annotate](https://github.com/mzgol/grunt-ng-annotate)).
-* If using array definition syntax, use the original names of the controller's dependencies. This will help you produce more readable code:
-
-```JavaScript
-function MyCtrl(s) {
- // ...
-}
-
-module.controller('MyCtrl', ['$scope', MyCtrl]);
-```
-
-which is less readable than:
-
-```JavaScript
-function MyCtrl($scope) {
- // ...
-}
-module.controller('MyCtrl', ['$scope', MyCtrl]);
-```
-
-This especially applies to a file that has so much code that you'd need to scroll through. This would possibly cause you to forget which variable is tied to which dependency.
-
-* Make the controllers as lean as possible. Abstract commonly used functions into a service.
-* Communicate within different controllers using method invocation (possible when a child wants to communicate with its parent) or `$emit`, `$broadcast` and `$on` methods. The emitted and broadcasted messages should be kept to a minimum.
-* Make a list of all messages which are passed using `$emit`, `$broadcast` and manage it carefully because of name collisions and possible bugs.
-
-Example:
-
-```JavaScript
-// app.js
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-Custom events:
- - 'authorization-message' - description of the message
- - { user, role, action } - data format
- - user - a string, which contains the username
- - role - an ID of the role the user has
- - action - specific ation the user tries to perform
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-```
-
-* When you need to format data encapsulate the formatting logic into a [filter](#filters) and declare it as dependency:
-
-```JavaScript
-function myFormat() {
- return function () {
- // ...
- };
-}
-module.filter('myFormat', myFormat);
-
-function MyCtrl($scope, myFormatFilter) {
- // ...
-}
-
-module.controller('MyCtrl', MyCtrl);
-```
-* In case of nested controllers use "nested scoping" (the `controllerAs` syntax):
-
-**app.js**
-```javascript
-module.config(function ($routeProvider) {
- $routeProvider
- .when('/route', {
- templateUrl: 'partials/template.html',
- controller: 'HomeCtrl',
- controllerAs: 'home'
- });
-});
-```
-**HomeCtrl**
-```javascript
-function HomeCtrl() {
- this.bindingValue = 42;
-}
-```
-**template.html**
-```
-
-```
-
-# Directives
-
-* Name your directives with lowerCamelCase.
-* Use `scope` instead of `$scope` in your link function. In the compile, post/pre link functions you have already defined arguments which will be passed when the function is invoked, you won't be able to change them using DI. This style is also used in AngularJS's source code.
-* Use custom prefixes for your directives to prevent name collisions with third-party libraries.
-* Do not use `ng` or `ui` prefixes since they are reserved for AngularJS and AngularJS UI usage.
-* DOM manipulations must be done only through directives.
-* Create an isolated scope when you develop reusable components.
-* Use directives as attributes or elements instead of comments or classes, this will make your code more readable.
-* Use `scope.$on('$destroy', fn)` for cleaning up. This is especially useful when you're wrapping third-party plugins as directives.
-* Do not forget to use `$sce` when you should deal with untrusted content.
-
-# Filters
-
-* Name your filters with lowerCamelCase.
-* Make your filters as light as possible. They are called often during the `$digest` loop so creating a slow filter will slow down your app.
-* Do a single thing in your filters, keep them coherent. More complex manipulations can be achieved by piping existing filters.
-
-# Services
-
-This section includes information about the service component in AngularJS. It is not dependent of the way of definition (i.e. as provider, `.factory`, `.service`), except if explicitly mentioned.
-
-* Use camelCase to name your services.
- * UpperCamelCase (PascalCase) for naming your services, used as constructor functions i.e.:
-
- ```JavaScript
- function MainCtrl($scope, User) {
- $scope.user = new User('foo', 42);
- }
-
- module.controller('MainCtrl', MainCtrl);
-
- function User(name, age) {
- this.name = name;
- this.age = age;
- }
-
- module.factory('User', function () {
- return User;
- });
- ```
-
- * lowerCamelCase for all other services.
-
-* Encapsulate all the business logic in services.
-* Services representing the domain preferably a `service` instead of a `factory`. In this way we can take advantage of the "klassical" inheritance easier:
-
-```JavaScript
-function Human() {
- //body
-}
-Human.prototype.talk = function () {
- return "I'm talking";
-};
-
-function Developer() {
- //body
-}
-Developer.prototype = Object.create(Human.prototype);
-Developer.prototype.code = function () {
- return "I'm coding";
-};
-
-myModule.service('Human', Human);
-myModule.service('Developer', Developer);
-
-```
-
-* For session-level cache you can use `$cacheFactory`. This should be used to cache results from requests or heavy computations.
-* If given service requires configuration define the service as provider and configure it in the `config` callback like:
-
-```JavaScript
-angular.module('demo', [])
-.config(function ($provide) {
- $provide.provider('sample', function () {
- var foo = 42;
- return {
- setFoo: function (f) {
- foo = f;
- },
- $get: function () {
- return {
- foo: foo
- };
- }
- };
- });
-});
-
-var demo = angular.module('demo');
-
-demo.config(function (sampleProvider) {
- sampleProvider.setFoo(41);
-});
-```
-
-# Templates
-
-* Use `ng-bind` or `ng-cloak` instead of simple `{{ }}` to prevent flashing content.
-* Avoid writing complex expressions in the templates.
-* When you need to set the `src` of an image dynamically use `ng-src` instead of `src` with `{{ }}` template.
-* When you need to set the `href` of an anchor tag dynamically use `ng-href` instead of `href` with `{{ }}` template.
-* Instead of using scope variable as string and using it with `style` attribute with `{{ }}`, use the directive `ng-style` with object-like parameters and scope variables as values:
-
-```HTML
-
-
-