2

Я Absolutley новый в AngularJS и довольно новый в JavaScript, и я следующие сомнения, связанные с этим примером показал в учебник:Как точно работает определение компонента приложения AngularJS (модуль, фабрика, контроллер)?

// Creates values or objects on demand 
angular.module("myApp")  // Get the "myApp" module created into the root.js file (into this module is injected the "serviceModule" service 
.value("testValue", "AngularJS Udemy") 

// Define a factory named "courseFactory" in which is injected the testValue 
.factory("courseFactory", function(testValue) { 
    // The factory create a "courseFactory" JSON object; 
    var courseFactory = { 
      'courseName': testValue, // Injected value 
      'author': 'Tuna Tore', 
      getCourse: function(){  // A function is a valid field of a JSON object 
      alert('Course: ' + this.courseName); // Also the call of another function 
      } 
      };  
    return courseFactory;  // Return the created JSON object 
}) 

// Controller named "factoryController" in which is injected the $scope service and the "courseFactory" factory: 
.controller("factoryController", function($scope, courseFactory) { 
    alert(courseFactory.courseName);  // When the view is shown first show a popupr retrieving the courseName form the factory 
    $scope.courseName = courseFactory.courseName; 
    console.log(courseFactory.courseName); 
    courseFactory.getCourse(); // Cause the second alert message 
}); 

Это довольно ясно для меня, что это было сделано: это создать угловой модуль которые представляют мое приложение, и это называется myApp. затем определите значение, фабрику (которая возвращает объект courseFactory JSON) и, наконец, контроллер, в который вводится предыдущая фабрика.

Думаю, что для меня непонятно синтаксис объявления этих «компонентов».

Так, мне кажется, что «синтаксис» что-то вроде этого:

angular.module("myApp").value(VALUE DECLARATION).factory("courseFactory", function(testValue) { RETURN THE JSON OBJECT IMPLEMENTING THE FACTORY }).controller("factoryController", function($scope, courseFactory) { IMPLEMENT THE CONTROLLER }); 

Так мои сомнения: почему все «компоненты» (далее значение декларация, завод реализация и контроллер ) определены в «цепочке конкатенаций», где «.» символ добавляет эти компоненты в цепочку?

Что именно означает это "." ?

Я думаю, что он добавляет поле к объекту или что-то в этом роде, но мне кажется странным.

Так первый есть угловой объект (это объект или что?), На котором добавлен модуль («MyApp») «компонент» (и, кажется, логика, потому что я добавляю модуль к Угловое).

Тогда значение добавлено в качестве свойства этого модуль. А также это имеет смысл, потому что я добавляю значение к определенному модулю.

Но почему тогда завод ы добавлен как поле этого значения, а затем контроллер добавляется как поле этого завода?

Думаю, что что-то не хватает.

Что мне не хватает? Как ezactly работает определение «компонент» AngularJS?

+0

ли это вам помочь? – tasseKATT

ответ

1

Следующая:

angular.module("myApp") 

Вернется объект, который представляет собой модуль.

Вы можете проверить это, выполнив:

console.log(angular.module("myApp")); 

Вы увидите, что этот объект имеет кучу методов, например value, controller и factory.

Это объясняет, почему вы можете сделать следующее:

angular.module("myApp").value("testValue", "AngularJS Udemy"); 

Хитрость заключается в том, что метод значение также возвращает объект модуля, так что вы можете продолжить цепочку:

angular.module("myApp").value("testValue", "AngularJS Udemy").factory(...) 

То же самое относится и к другие методы на объекте модуля.

Наличие методов, возвращающих основной объект, подобный этому, является общепринятой техникой, позволяющей такую ​​цепочку.

Вы можете прочитать это следующим образом:

var myModule; 

myModule = angular.module('myApp'); // Returns the module 

myModule = myModule.value(...); // Registers a value and returns the module 

myModule = myModule.factory(...); // Registers a factory and returns the module 
Смежные вопросы