2013-03-02 55 views
0

我有這樣的代碼示例對象:

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

我期待看到「3」的警報,但我得到一個「0」(在某些情況下 - 未定義)我找不到原因。

我用這個來創建一組複選框,而數組是需要的,以便在提交表單時檢查它們的狀態。

實施例:http://jsfiddle.net/dorongol/cwZ6F/

+0

[獲取對象的長度](http://stackoverflow.com/questions/10641502/getting-length-of-an-object)。 – 2013-03-02 06:35:22

回答

1

您使用的對象,而不是陣列。 只有真正的數組會自動跟蹤「length」屬性。如果你想使用一個對象,你需要自己處理它(例如通過在對象中創建一個getLength方法)。

對於真正的數組,這是可行的,但你別無選擇,只能使用基於0的索引。

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

注意這看起來像全局變量,這通常是一個壞主意。

+0

謝謝!一旦移動到適當的數組和一些html修改一切似乎工作正常。 – 2013-03-02 07:04:12

0

獲得哈希長度,並重申直通他們

$scope.checkboxgetfilters = function() { 
    alert(Object.keys($scope.filtergroup1).length); 
    var str = ''; 
     for (var i in $scope.filtergroup1) { 
     alert($scope.filtergroup1[i]); 
     } 
    } 
0

你可以使用對象的數組,如果你仍然希望雙方的名稱和狀態

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

兩全其美!