这是HTML:
<tr data-ng-repeat="a in assignments" data-ng-click="vm.handleAssignmentClicked()">
...
</tr>
以下是相关的指令和控制器:
angular
.module('app.assignments')
.directive('stfrAssignments', assignmentsDirective)
.controller('AssignmentsController', AssignmentsController);
function assignmentsDirective() {
var directive = {
restrict: 'E',
templateUrl: 'components/assignments/assignments.html',
scope: {
assignments: '='
},
controller: 'AssignmentsController',
controllerAs: 'vm'
};
return directive;
}
function AssignmentsController() {
var vm = this;
function handleAssignmentClicked() {
console.log('handleAssignmentClicked');
}
}
当我单击一个任务(表中的一行)时,未调用
handleAssignmentClicked()
函数。我应该在哪里寻找问题? 最佳答案
更新:正如注释中指出的那样,父指令(我们假定正在使用)正在使用controllerAs
语法,这在第二点[2]中已解决。我留下第一个供参考。
[1]除非使用this
语法,否则控制器中的$scope
关键字与其contoller as controllerName
不同。
您可以在控制器中注入$scope
:
function AssignmentsController($scope) {
$scope.handleAssignmentClicked() {
console.log('handleAssignmentClicked');
}
}
[2]或者,您的情况是:
<div ng-controller="AssignmentsController as assignCtrl">
...
<tr data-ng-repeat="a in assignCtrl.assignments" data-ng-click="assignCtrl.handleAssignmentClicked()">
在您的控制器中,您将使用
this
使该功能可访问:this.handleAssignmentClicked = function() { ... }
关于angularjs - AngularJS-为什么不触发ng-click处理程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29378455/