ng-repeat, ng-click, директива и взаимодействие с контроллером

У меня есть этот фрагмент директивы:

return {
        scope: {},
        restrict: 'E',
        templateUrl: 'partials/order_table.html',
        controller: 'OrderController as x',
        link : function(scope, element, attrs) {
        }

и это templateURL фрагмент кода:

<tr ng-repeat="r in getOrderModel().getSizes()" ng-click="x.setSize($index)">

У меня вопрос, почему ng-repeat имеет доступ к контроллеру напрямую (#getOrderModel это функция в контроллере) ng-click не? Если я уберу хоккей as x из директивы и тому x. от ng-click, ng-click перестает работать Почему не ng-click обратитесь к контроллеру? Как мне сделать контроллер известным ng-click используя лучшие практики?

я знаю ng-repeat создаст дочернюю область, но для меня это не похоже на проблему родительской области.

1 ответ

Используйте свойство controllerAs:

return {
    scope: {},
    restrict: 'E',
    templateUrl: 'partials/order_table.html',
    controller: 'OrderController',
    controllerAs: 'x',
    link : function(scope, element, attrs) {
}

AngularJS Документация для контроллеров As