Najczystszym sposobem definiowania kontrolerów jest 1 na plik. Każdy plik powinien być zawarty w bezpośrednio wywołanym wyrażeniu funkcji (IIFE) lub zamknięciu, które pozwala mu mieć własne zmienne lokalne bez zanieczyszczania zasięgu globalnego. To jest podejście, które podejmuję w moich projektach:
my-app.js - Plik definicji głównego modułu - Głównym celem tego pliku jest zdefiniowanie modułu aplikacji i jego zależności, zdefiniowanie routingu (jeśli jest używany routing), oraz konfiguruj dostawców. W najprostszej postaci wygląda to tak:
(function (angular) {
angular.module('myApp', ['myApp.someFeature']);
}(angular));
pewne-cecha/Some-feature.js - funkcja modułu pliku definicji - Plik ten definiuje modułu do funkcji i wszelkimi zależnościami, że ta funkcja wymaga. Może to być dowolne logiczne grupowanie, a nie tylko funkcja. Dzięki temu bardzo łatwo można w razie potrzeby przenieść tę funkcję do innego modułu lub aplikacji.
(function (angular) {
angular.module('myApp.someFeature', []);
}(angular));
pewne-cecha/Some-funkcje controller.js - sterownik wymagany dla funkcji - Jeśli funkcja zawiera wiele kontrolerów, nazwa bardziej opisowy byłoby pozwala zakładać tej funkcji wymaga jedynie 1 kontroler potrzebne, ale.
(function (angular) {
function SomeFeatureController($scope) {
...
}
angular
.module('myApp.someFeature')
.controller('SomeFeatureController', SomeFeatureController);
}(angular));
index.html - Strona plik html - Dość wymowne
<html ng-app="myApp">
<head>
<title>My Angular App</title>
<!-- Note: Angular and jQuery (if used) go in head so they delay view loading -->
<script type="text/javascript" language="javascript" src="angular.js"></script>
</head>
<body ng-controller="SomeFeatureController">
Content here....
<!-- Note application files go at the end of the body so they do not delay view loading -->
<script type="text/javascript language="javascript src="my-app.js">
<script type="text/javascript language="javascript src="some-feature/some-feature.js">
<script type="text/javascript language="javascript src="some-feature/some-feature-controller.js">
</body>
</html>
Nie wiedziałem, że '' module' obiekt posiada funkcję controller' wewnątrz, ale sprawia, że wiele sensu =) Dzięki. –
Angular wymaga lepszej dokumentacji. To świetny framework, ale ma stromą krzywą uczenia się. –
Dziękujemy za edycję, jak korzystać z modułu za pomocą ng-app, a następnie za pomocą ng-kontrolera – Alex