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

时间:2013-12-18 22:16:42

标签: javascript angularjs checkbox

我试图从绑定到复选框的$ 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]

1 个答案:

答案 0 :(得分:1)

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

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
    }
}

但问题在于,从数组中插入和删除需要线性时间,这与将整个对象转换为数组的时间大小相同。