AngularJS 1.5组件模板的ng-click不会触发

时间:2016-06-12 00:05:13

标签: javascript html angularjs angularjs-directive

我正在为我的一个项目挑选Angular,并且无法正确地迈出第一步。

具体来说,我可以通过组件和相应的模板获取要显示的项目列表,但我无法弄清楚如何使用组件模型触发ng-click事件。关于这方面的许多类似问题已在SO上得到了回答,但我已经遵循了许多改进和建议而没有取得进展,需要一些建议。

file: customerList.js
function CustomerListController($scope, $element, $attrs, $http) {
    this.customerList = [
        { name: 'Arya' },
        { name: 'No One' },
    ];

    this.yell = function(customer) {
        console.log("customer customer, we've got a click");
    };
}

angular.module('myApp').component('customerList', {
    templateUrl: 'customerList.html',
    controller: CustomerListController,
});

及其模板:

file: customerList.html
<div class="customer"
    ng-repeat="customer in $ctrl.customerList"
    customer="customer"
    ng-click="$ctrl.yell(customer);">
        Welcome home, {{customer.name}}!
</div>

即使我设置了ng-click="console.log('click detected');",也没有控制台日志。

我相信这是足以诊断的信息,但如果您需要更多信息,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,console.log不会直接在角度表达式中起作用。您无法直接在表达式中使用窗口函数。

其次,我建议使用controllerAs语法,因为它是一种较新的学校做事方式。尝试使用控制器访问控制器作为ng-click()表达式中的别名。