ng-repeat,ng-click,指令和控制器交互

时间:2014-08-16 15:12:06

标签: angularjs angularjs-directive angularjs-ng-repeat angularjs-controller angularjs-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-clickng-click就会停止工作。为什么ng-click没有引用控制器?如何使用最佳实践使ng-click知道控制器?

我知道ng-repeat会创建一个子范围,但这对我来说不像父范围问题。

1 个答案:

答案 0 :(得分:1)

使用controllerAs属性:

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

AngularJS Documentation for controllerAs