为什么“ng checked”不适用于“ng change”
Why is `ng-checked` not working with `ng-change`?
我有一个复选框列表。每当我点击复选框时,我都想调用一个函数,这取决于它是被选中还是未被选中。这是使用ng-change
实现的
同时,我还有ng-checked
,它可以帮助我使用按钮取消选中复选框。
以下是实现:
<md-checkbox md-no-ink="true" ng-checked="selected.indexOf(brand) > -1" ng-change="value?add(brand):remove(brand)" ng-model="value" ng-repeat="brand in brands">
{{brand}}
</md-checkbox>
<md-button ng-click="fun('Spice')">Uncheck</md-button>
控制器代码如下:
$scope.brands = ['Apple','Samsung','Motorolla','Nokia','Micromax','Spice'];
$scope.value = false;
$scope.selected = [];
$scope.fun = function(x){
console.log("Unchecking "+x);
}
$scope.add = function(x){
$scope.selected.push(x);
}
$scope.remove = function(x){
var index = $scope.selected.indexOf(x);
$scope.selected.splice(index,1);
}
Stackovrflow上也有类似的问题,但它有关于复选框中缺少ng模型的问题。我在这里包含了ng-model
。
为什么不起作用?我做错什么了吗?
官方文件指出
请注意,此指令不应与ngModel一起使用,因为这可能会导致意外行为。
您应该决定是使用ng-model
还是ng-checked
。不幸的是,目前无法在md-checkbox
指令上使用ng-checked
(请参阅此错误)。因此,您将不得不使用ng-model
。以下代码应该会对您有所帮助。
HTML
<md-checkbox md-no-ink="true" ng-model="selected[$index]" ng-repeat="brand in brands track by $index">
{{brand}}
</md-checkbox>
Is Samsung selected: {{isSelected('Samsung')}}
JS
$scope.brands = ['Apple','Samsung','Motorolla','Nokia','Micromax','Spice'];
$scope.selected = [];
$scope.isSelected = function(brand) {
var brandIndex = $scope.brands.indexOf(brand);
return $scope.selected[brandIndex]
};
请注意,每个复选框都需要自己的模型。在将$scope.value
用作所有复选框的单个模型之前——在这种情况下,它们将同时被选中/取消选中。
我相信上面的代码就是你想要的。如果我没有抓住要点,欢迎发表评论。
相关文章:
- 为什么“ng checked”不适用于“ng change”
- 使用 ng-change 对输入类型数据进行 JavaScript 取消事件
- Angularjs slider with ng-change
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- ng-change不适用于ng选项
- 如何在AngularJS ng-click(或ng-change,..)中调用服务函数
- 何时在 Angularjs 中使用 $watch 或 ng-change
- ng-change在我的指令中不适用于选择
- 在调用 ng-change 之前验证复选框
- 角度新手:尝试使用 ng-change,获取“模块'ngModel'不可用”
- 当 ng-change 事件发生时,函数不会在角度 js 中调用
- ng-change在AngularJS应用程序中不起作用
- AngularJS ng-change not calling function
- 重新编译角度指令以编程方式添加 ng-module 和 ng-change
- $event未在文本输入的 ng-change 中定义
- 使用角度,如何在下拉列表中获取 ng-change 上的选定值
- Angularjs (ng-click, ng-change) 指令不适用于 icheck 插件
- 使用 ng-change Angular 隐藏元素
- 如何在角度 UI 开关中获得 ng-change 事件
- 取消以前由 ng-change 创建的 api 请求