2015-05-20 6 views
1

Как я могу использовать $ scope для доступа к функциям, как нравится $ watch, $ emit, $ digest?

Когда я пытаюсь сделать это:

class HomeController { 
    // @ngInject 
    constructor($scope) { 
    $scope.country = {}; 
    $scope.countries = [ 
     {name: 'Afghanistan', code: 'AF'}, 
     {name: 'Åland Islands', code: 'AX'}, 
     {name: 'Albania', code: 'AL'}, 
     {name: 'Algeria', code: 'DZ'}, 
     {name: 'American Samoa', code: 'AS'}, 
     {name: 'Andorra', code: 'AD'}, 
     {name: 'Angola', code: 'AO'}, 
     {name: 'Anguilla', code: 'AI'} 
    ]; 
    } 
} 

export default HomeController; 

Я получаю сообщение об ошибке: Не удалось создать экземпляр контроллера HomeController

ответ

1

была такая же проблема при попытке использовать $ наблюдать за связывание данных ,

На этом этапе написания текущей версии Углового нового маршрутизатора (v0.5.3) не удалось создать экземпляр контроллера с введенным объемом. issue был зарегистрирован на github.

В соответствии с отдельной версией исправления этой проблемы существует промежуточный пакет на npm. Для получения информации см. zVictor's post.

0

NEWER ОТВЕТ
С новым маршрутизатором контроллер получает инициированный перед тем она создается сфера ребенка.
Детский охват (область действия контроллера) создается при вызове метода activate, то есть после завершения фактической компиляции представления. Поэтому просто невозможно вставить $ scope - это просто создано позже.
Длинная история расправился ... Существует лучше, встроенный решения для этого.
Вместо того, чтобы присваивать свои свойства несуществующим, но $scope, просто назначьте их в переменной "this" - переменной экземпляра контроллера. Тогда на представлении, вы можете использовать их, ссылаясь на имя контроллера:

angular.module('app.home').controller('HomeController', HomeController); 

function HomeController() { 
    this.name = "tomer"; 
} 

и теперь на шаблоне HTML:

<div> 
    <h1>{{home.name}} 
</div> 

имеет смысл?

+2

Ну, как бы вы использовали $ watch с этим тогда? –

Смежные вопросы