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 に答える