60

オブジェクトの配列があり、 を使用しng-repeatてそれらを反復処理していますが、これは簡単です。配列は次のようになります。

$scope.steps = [
    {companyName: true},
    {businessType: true},
    {physicalAddress: true}
];

そして私のng-repeat属性は次のようになります:

<div ng-repeat="step in steps"> ... </div>

期待どおり、各反復でstepオブジェクトの 1 つに等しくなります。stepオブジェクトのキーと値の両方にアクセスする方法はありますか? 私はこのようなことができるように:

<div ng-repeat="(stepName, isComplete) in steps"> ... </div>

stepName=='companyName'isComplete==の場所true。私はこの正確なことをやろうとしましたが、stepName常にステップオブジェクトのインデックスになってしまいます(これは理にかなっています)。ng-repeatキーと値を取得できるように構文を記述する別の方法があるかどうかを調べようとしています。

アイデア/提案をありがとう。とても有難い。

PS。私の現在の回避策は、コントローラーでこれを行うことです:

$scope.stepNames = [];
angular.forEach($scope.steps, function(isComplete, stepName){
     $scope.stepNames.push({stepName: stepName, isComplete: isComplete});
});

そして、それを繰り返しますが、ビューですべてを行うとよいでしょう

4

6 に答える 6

109

A repeater inside a repeater

<div ng-repeat="step in steps">
    <div ng-repeat="(key, value) in step">
        {{key}} : {{value}}
    </div>
</div>
于 2013-10-23T14:46:35.077 に答える
17

実際、あなたのデータは適切に設計されていません。次のようなものを使用することをお勧めします。

$scope.steps = [
    {stepName: "companyName", isComplete: true},
    {stepName: "businessType", isComplete: true},
    {stepName: "physicalAddress", isComplete: true}
];

次に、やりたいことを簡単に実行できます。

<div ng-repeat="step in steps">
 Step {{step.stepName}} status : {{step.isComplet}}
</div>

例: http://jsfiddle.net/rX7ba/

于 2013-10-23T14:58:18.430 に答える