2016-04-26 4 views
0

Я довольно новичок в угловых материалах. Я пытаюсь использовать функцию автозаполнения.Имея «как ctrl» в ng-контроллере, не имея его

У меня есть код для автозаполнения здесь; http://codepen.io/helpme/pen/KzxXPQ

Первое, что меня насторожило, - это объявление контроллера;

<div ng-controller="DemoCtrl as ctrl" layout="column" ng-cloak="" ng-app="MyApp"> 

В моем прошлом angularjs коде, нг-контроллер объявляется таким образом <div ng-controller="DemoCtrl" без as ctrl.

В чем разница между наличием as ctrl и не имеющим его? Как изменить код на http://codepen.io/helpme/pen/KzxXPQ, если удаляется as ctrl? отлично Angular style guide (обязательное чтение для всех новых угловых дэвов IMO)

+10

Это разъясняется здесь: http://stackoverflow.com/questions/21287794/angularjs-controller-as-syntax-clarification –

+1

Подробнее о 'ctrl' [here] (https: //docs.angularjs .org/API/нг/директивы/ngController). Если вы не хотите использовать 'ctrl', удалите его в html и в контроллере удалите' var self = this' и измените 'self' на' $ scope' (не забудьте поставить $ scope в контроллер). – DieuNQ

ответ

1

Джона папина охватывает это довольно хорошо:

Почему построены ?: Контроллеры «обновленный», и обеспечить единый новый экземпляр, и Синтаксис controllerAs ближе к синтаксису конструктора JavaScript, чем классический синтаксис $ scope.

Почему ?: Он способствует использованию привязки к «пунктируемому» объекту в представлении (например, customer.name вместо имени), который является более контекстуальным, более легким для чтения и позволяет избежать любых проблем со ссылками, которые могут возникнуть без «расставить».

Почему ?: Помогает избежать использования $ parent calls в представлениях с вложенными контроллерами.

Очки 2 и 3 являются для меня ключом - это делает ваш код намного легче читать и обслуживать.