Angular复选框输入ng-click从未调用过

时间:2015-09-26 10:09:49

标签: javascript angularjs checkbox

在我的Angular应用程序中,我有一个带有复选框输入的表单:

<div ng-repeat="partner in type.partners">
    <label class="checkbox-inline">
        <input type="checkbox" value="partner"
        ng-checked="report.participatingPartners[$parent.$index].indexOf(partner) !== -1" 
        ng-click="toggleSelection($parent.$index, $index);">
        <p><span></span>{{partner.name}}<p>
    </label>
</div>

在我的控制器中,只是为了测试这个设置:

var vm = this;
vm.toggleSelection = toggleSelection;

...

function toggleSelection(typeId, partnerId) {
    console.log("toggleSelection called");
    console.log(typeId, partnerId);
}

单击复选框或其标签时,永远不会调用此函数。那是为什么?

我知道它不是controllerAs语法,因为其他功能正常。

3 个答案:

答案 0 :(得分:2)

您可能想要使用的属性是ng-change。角度输入指令没有ng-clickedng-checked

请参阅docs

答案 1 :(得分:1)

将您尝试引用的功能放在ng-click$scope而不是this上,点击事件应该根据需要进行绑定。

在控制器上......

$scope.toggleSelection = toggleSelection;

 function toggleSelection(typeId, partnerId) {
    ...
}

在你的HTML上......

<input type="checkbox" value="partner"
    ng-click="toggleSelection($parent.$index, $index);">

这是一个简单的Fiddle工作。

答案 2 :(得分:-1)

您写了以下代码:

ng-checked="vm.toggleSelection($parent.$index, $index);"

但它应该是:

ng-checked="toggleSelection($parent.$index, $index);"

只需删除“vm”

即可