我有几个复选框:
<input type='checkbox' value="apple" checked>
<input type='checkbox' value="orange">
<input type='checkbox' value="pear" checked>
<input type='checkbox' value="naartjie">
我希望绑定到控制器中的一个列表,这样,每当更改复选框时,控制器就会维护所有选中值的列表,例如,['apple','pear']
。
ng-model似乎只能将一个复选框的值绑定到控制器中的一个变量。
有没有另一种方法可以这样做,以便我可以将四个复选框绑定到控制器中的一个列表?
有两种方法来处理这个问题。使用简单数组或对象数组。每种解决方案都有利弊。下面你会为每个案例找到一个。
HTML可能如下所示:
<label ng-repeat="fruitName in fruits">
<input
type="checkbox"
name="selectedFruits[]"
value="{{fruitName}}"
ng-checked="selection.indexOf(fruitName) > -1"
ng-click="toggleSelection(fruitName)"
> {{fruitName}}
</label>
适当的控制器代码为:
app.controller('SimpleArrayCtrl', ['$scope', function SimpleArrayCtrl($scope) {
// Fruits
$scope.fruits = ['apple', 'orange', 'pear', 'naartjie'];
// Selected fruits
$scope.selection = ['apple', 'pear'];
// Toggle selection for a given fruit by name
$scope.toggleSelection = function toggleSelection(fruitName) {
var idx = $scope.selection.indexOf(fruitName);
// Is currently selected
if (idx > -1) {
$scope.selection.splice(idx, 1);
}
// Is newly selected
else {
$scope.selection.push(fruitName);
}
};
}]);
缺点:Add/Remove很麻烦,因为必须管理两个列表(输入和选择)
HTML可能如下所示:
<label ng-repeat="fruit in fruits">
<!--
- Use `value="{{fruit.name}}"` to give the input a real value, in case the form gets submitted
traditionally
- Use `ng-checked="fruit.selected"` to have the checkbox checked based on some angular expression
(no two-way-data-binding)
- Use `ng-model="fruit.selected"` to utilize two-way-data-binding. Note that `.selected`
is arbitrary. The property name could be anything and will be created on the object if not present.
-->
<input
type="checkbox"
name="selectedFruits[]"
value="{{fruit.name}}"
ng-model="fruit.selected"
> {{fruit.name}}
</label>
适当的控制器代码为:
app.controller('ObjectArrayCtrl', ['$scope', 'filterFilter', function ObjectArrayCtrl($scope, filterFilter) {
// Fruits
$scope.fruits = [
{ name: 'apple', selected: true },
{ name: 'orange', selected: false },
{ name: 'pear', selected: true },
{ name: 'naartjie', selected: false }
];
// Selected fruits
$scope.selection = [];
// Helper method to get selected fruits
$scope.selectedFruits = function selectedFruits() {
return filterFilter($scope.fruits, { selected: true });
};
// Watch fruits for changes
$scope.$watch('fruits|filter:{selected:true}', function (nv) {
$scope.selection = nv.map(function (fruit) {
return fruit.name;
});
}, true);
}]);
优点:添加/删除非常容易
缺点:数据结构比较复杂,按名称切换比较麻烦,或者需要一个helper方法
演示:http://jsbin.com/imaquc/1/
问题内容: 我有几个复选框: 我想绑定到控制器中的列表,以便每当更改复选框时,控制器都维护所有检查值的列表,例如。 ng-model似乎只能将一个复选框的值绑定到控制器中的变量。 还有另一种方法可以使四个复选框绑定到控制器中的列表吗? 问题答案: 有两种方法可以解决此问题。使用简单数组或对象数组。每个解决方案都有其优缺点。您会在下面找到每种情况的一种。 用简单的数组作为输入数据 HTML可能如下所
我已经检查了如何用AngularJS绑定到复选框值列表的问题。但是这个问题解释了阵列列表和在角度控制器中处理它的最佳方法。 我们如何将值绑定到checkbox,使值在未选中时为模态0,在选中时为模态1?HTML和控制器里应该有什么?
问题内容: 我正在尝试使用ng- model将复选框绑定到作用域。复选框的初始状态恰好与范围模型相对应,但是当我选中/取消选中复选框时,模型不会更改。需要注意的是,模板是在运行时使用ng- include动态加载的 当我选中该框时,控制台记录为false,而当我取消选中该框时,控制台再次记录为false。我还在作用域上有一个订单模型,如果我将复选框的模型更改为order.billing_is_sh
本文向大家介绍aurelia 绑定到复选框,包括了aurelia 绑定到复选框的使用技巧和注意事项,需要的朋友参考一下 示例 基本复选框 带有对象数组的复选框 带有布尔值的复选框
我的发帖方法: 索引页表单: 当我单击submit时,browser显示为错误的请求,但没有th:field=“*{userRole}”,我可以提交表单。有什么办法解决这个问题吗? 然后如@roel所述更改了表单。 多谢了。
问题内容: 我已经编辑了数据,并试图仅获取用户已选择的数据。我不确定该怎么做,这就是我所拥有的: HTML: JS: 我确实以一种方式使它工作-通过向每个对象添加属性并将复选框的更改为,然后可以在函数中对此进行过滤。但是,这似乎效率很低,如果可以避免,我不想在模型中添加额外的属性。 有没有更好的办法 ? 问题答案: 的JavaScript HTML http://plnkr.co/edit/lqt