在我的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
语法,因为其他功能正常。
答案 0 :(得分:2)
您可能想要使用的属性是ng-change
。角度输入指令没有ng-clicked
或ng-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”
即可