programing

ng-timeout: 객체 배열 내의 각 객체에 대한 접근키와 값

closeapi 2023. 2. 25. 20:59
반응형

ng-timeout: 객체 배열 내의 각 객체에 대한 접근키와 값

오브젝트 배열이 있고 이 오브젝트를 사용하고 있습니다.ng-repeat반복하기 쉽죠어레이는 다음과 같습니다.

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

그리고 나의ng-repeat속성은 다음과 같습니다.

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

각 반복마다,step예상대로 오브젝트 중 하나와 동일합니다.키와 가치 모두에 액세스 할 수 있는 방법이 있습니까?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});
});

그리고 나서 그걸 반복하지만, 모든 걸 뷰에서 할 수 있다면 좋을 거야.

리피터 내부의 리피터

<div ng-repeat="step in steps">
    <div ng-repeat="(key, value) in step">
        {{key}} : {{value}}
    </div>
</div>

실제로 데이터가 제대로 설계되지 않았습니다.다음과 같은 것을 사용하는 것이 좋습니다.

$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/

이것이 옵션인 경우, 데이터를 객체 형태로 만들면 원하는 대로 작동합니다.

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

이 문제에 대한 자세한 내용은 http://jsfiddle.net/zMjVp/ 입니다.http://jsfiddle.net/zMjVp/

데이터 설계 방식에 문제가 있는 것 같습니다.의미론적인 면에서는 말이 안 돼요스텝이란 정확히 무엇을 위한 것입니까?

한 회사의 정보를 저장합니까?

이 경우 스텝은 오브젝트여야 하며(KayakDave의 답변 참조), 각 "스텝"은 오브젝트 속성이어야 합니다.

여러 회사의 정보를 저장합니까?

이 경우 스텝은 오브젝트 배열이어야 합니다.

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

어느 경우든 1회(두 번째 경우 2회) ng-반복으로 데이터를 쉽게 반복할 수 있습니다.

다음은 리피터를 네스트하지 않아도 되는 다른 방법입니다.

Angularjs 문서에서:

다음 구문을 사용하여 ngRepeat에서 객체의 속성을 반복할 수 있습니다.

<div ng-repeat="(key, value) in steps"> {{key}} : {{value}} </div>

Angular 1.3.12에서는 내부 ng-repeat이 불필요해진 것 같습니다.외부 루프는 컬렉션의 값을 단일 맵엔트리로 반환합니다.

언급URL : https://stackoverflow.com/questions/19544904/ng-repeat-access-key-and-value-for-each-object-in-array-of-objects

반응형