2013-11-16 2 views
-2

этот простой угловой контроллер:Как активируется функция Controller в Angular?

var WorldCtrl = function ($scope) { 
    $scope.population = 7000; 
    $scope.countries = [{name: 'India', population: 121}, {name: 'China', population: 178} ]; 
}; 

И этот контроллер привыкает таким образом внутри взгляды

<body ng-app> 
<ul ng-controller="WorldCtrl"> 
    <li ng-repeat="country in countries"> 
    {{country.name}} has population of {{country.population}} 
    </li> 
    <hr> 
    World's population: {{population}} millions 
</ul> 
</body> 

Вопрос

  1. ли WorldCtrl план-старых объекты JavaScript функции ИЛИ есть еще к этому?
  2. Нигде в коде есть строка, которая вызывает функцию WorldCtrl(). как это происходит?
  3. $scope представляется параметром/аргументом, переданным на WorldCtrl(), но он не ведет себя так. Поскольку это был нормальный аргумент, мы могли бы назвать его WorldCtrl (foo), и он все равно будет работать так же. Но $scope кажется чувствительным к наименованию & работает только при определении WorldCtrl ($ scope). Кто-нибудь объясняет это почему?
  4. $scope похоже на объект, который угловой создает самостоятельно & передается по ссылке как WorldCtrl Функция не возвращает ничего полезного. поэтому любые изменения в $ scope изменяют исходный объект, который затем угловой переходит в представления. верный?
+3

Прочтите это 1st: http: // stackoverflow.com/questions/14994391/how-do-i-think-in-angularjs-if-i-have-a-jquery-background –

+2

Как насчет чтения угловой документации? На это все ответили. –

ответ

2

Как и следовало ожидать, вы должны прочитать документацию и работать через Угловой tutorial.

Чтобы начать обучение, я также сильно рекомендую egghead.io

Угловые работы в качестве основы для вашего приложения. Поэтому он добавляет некоторые соглашения, которые должны соблюдаться.

WorldCtrl, например, работает как controller.

Угловое использование dependency injection, которое отвечает за получение $scope для работы. $ scope не является «регулярным» аргументом. Инъекция означает, что вы сообщаете своей функции контроллера, что вы хотите использовать объект $ scope внутри него.


Подумайте о своем применении по-новому. Вы хотите показать данные о погоде в мире. Поэтому вы нуждаетесь в представлении, которое выполняет эту работу. Представление - это ваша разметка HTML. Каждое представление должно быть привязано к его собственному контроллеру. Контроллер содержит логику представлений и предоставляет ему данные. Например вы можете сделать следующее:

  • Определить вид, который должен показать данные мирового населения
  • Определить контроллер для вашего зрения, которая предоставляет данные через $scope объекта.
  • Получить данные от туда, куда вы хотите, и хранить его в service
  • Вводить службу к контроллеру и скопировать своей информации контроллера.
Смежные вопросы