/ / Angular JS - параметри на модула.контролер [дубликат] - javascript, angularjs, angular-controller, angular-module

Ъглови JS - параметри на module.controller [duplicate] - javascript, angularjs, ъглово-контролер, ъглово-модул

Аз съм нов за Angular JS и в урок те поставят, че начинът за създаване на контролер е:

angular.module("app", [])
.controller("TodoController", ["$scope", function ($scope) {
$scope.todos = [
{ title: "Learn Javascript", completed: true },
{ title: "Learn Angular.js", completed: false },
{ title: "Love this tutorial", completed: true },
{ title: "Learn Javascript design patterns", completed: false },
{ title: "Build Node.js backend", completed: false },
];
}]);

Искам да разбера какво прави всеки един от параметрите:

  • "TodoController"
  • масив
    • "$ Обхват"
    • функция

Предполагам, че първото е името на контролера, а последното е конструкторът TodoController.

Но какво е "$scope" ? Име на променлива, което да се използва в HTML, име на метод?

Мога ли да изпратя повече параметри в масива?

Търсих в Angular Dokcs, но е доста куц, без док за методите. Търсенето на код на клас нито даде много повече информация.

Отговори:

1 за отговор № 1

Вторият аргумент (масив от низове + функция) се използва за инжектиране на зависимост.

angular.controller("TodoController", ["$scope", function ($scope) { ... }])

В случай, че вашият код стане минимизиран ъглов ще знае кои зависимости да инжектирате, тъй като низовете не са засегнати от минимизиране.

Така че горният код след минимизиране ще стане нещо подобно:

angular.controller("TodoController",["$scope",function(o){...}]);

И все още ще се чете по алгоритъма на инжектиране на ъгловата зависимост.

PS. Масивът не е задължителен, можете да преминете там просто обикновена функция.


2 за отговор № 2

В масива аргументите (String) са.

$scope е обект, който поддържа обвързването с изгледа и неговото съдържание е достъпно както в изглед, така и в контролер. Тя се създава от $new метод на ($rootScope и след това йерархията), когато го инжектирате в нов контролер и е необходимо да се създаде инстанция на този контролер.


1 за отговор № 3

Да. Ти си прав.

Първият параметър е името на контролера. Вторият масив, където последният елемент в масива ще бъде функция на контролера, а други елементи са зависимости. Това се нарича Inline Array Annotation.

Можете да създадете контролера, без да предавате масив, освен ако не смекчите кода си (Implicit annotation.)

Внимателен: Ако планирате да изтриете кода, имената на услугите ви ще бъдат преименувани и ще разбият приложението ви.

Моля, проверете три начина за създаване на контролери или услуги. https://docs.angularjs.org/guide/di