如何从复选框中获取值?在 Angular JS

How to get value from an checkbox? in Angular JS

本文关键字:Angular JS 获取 复选框      更新时间:2023-09-26

我试图从绑定到复选框的$rootScope对象中获取值。

.HTML:

<tr ng-repeat="system_history in SystemHistoryResponse.system_history">
<td><input type="checkbox" ng-model="versionValues[system_history.version]"></td>
</tr>

.JS:

$rootScope.versionValues = {};

现在输出:

versionValues: {"321":true,"322":true}

期望输出:

versionValues: [321, 322]

我会在需要时将对象转换为数组:

var a = {"321":true,"322":true};
var b = [];
var i = 0;
for(x in a){ 
    b[i++] = parseInt(x,10);
}
// b === [321,322]

否则,您可以使用 ngChange 指令(注意:我还没有测试过这段代码):

html:
<input type="checkbox" ng-model="versionValues[system_history.version]
ng-change="update(system_history.version)"
">
js:
$rootScope.versionValues = {};
$rootScope.versionValuesArray = [];
$rootScope.update(version){
    if($rootScope.versionValues[version]){
        // add version to $rootScope.versionValuesArray
    }else{
        // remove version from $rootScope.versionValuesArray
    }
}

但这样做的问题是,在数组中插入和删除需要线性时间,这与将整个对象转换为数组的时间量级相同。