我试图从绑定到复选框的$ 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]
答案 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
}
}
但问题在于,从数组中插入和删除需要线性时间,这与将整个对象转换为数组的时间大小相同。