0

我有这个代码示例:

$scope.testarray = {
    "a": true,
    "b": true,
    "c":false
};
$scope.test = function () {
    alert($scope.testarray.length);
}

我期待看到带有“3”的警报,但我得到一个“0”(在某些情况下 - 未定义),我找不到原因。

我使用它来创建一组复选框,而需要数组以便在提交表单后检查它们的状态。

示例:http: //jsfiddle.net/dorongol/cwZ6F/

4

3 回答 3

1

您使用的是对象而不是数组。只有真正的数组会自动跟踪“长度”属性。如果要使用对象,则需要自己处理(例如,通过在对象中创建 getLength 方法)。

对于真正的数组,这会起作用,但您别无选择,只能使用从 0 开始的索引。

$scope.testarray = [true, true, false];
$scope.test = function () {
    alert($scope.testarray.length);
}

请注意,这看起来像全局变量,这通常是个坏主意。

于 2013-03-02T06:30:27.540 回答
0

获取哈希长度,并通过它们重复

 $scope.checkboxgetfilters = function () {
    alert(Object.keys($scope.filtergroup1).length);
     var str = '';
       for (var i in $scope.filtergroup1) {
         alert($scope.filtergroup1[i]);
       }
  }
于 2013-03-02T06:54:52.580 回答
0

如果您仍然需要名称和状态,则可以使用对象数组

$scope.testarray = [
    {
     "name":"a",
     "enabled": true
    },
    {
     "name":"b",
     "enabled": true
    },
    {
     "name":"c",
     "enabled": false
    }
];

两全其美!

于 2013-03-02T07:14:06.217 回答