programing

AngularJS 보간 오류

javajsp 2023. 10. 1. 19:18

AngularJS 보간 오류

작업 중인 룸 관리 어플리케이션의 일부로 룸 속성을 표시하고 있으며, 출력은 다음과 같습니다.

enter image description here

보시다시피 Beamer(영어 Projector)의 값은 "Sony(램프 01/12/2013)"입니다.이 출력은 정확하지만 콘솔을 열면 보간과 관련된 몇 가지 오류가 나타납니다.

enter image description here

더 큰 해상도:

enter image description here

"Can't interpolate: {{getBeamerString()}} TypeError: Cannot read property 'aanwezig' of undefined"

html 부분입니다.

<section class="eigenschappen">
    <table class="table table-striped table-hover table-bordered">
        <thead>
        <tr>
            <th>Eigenschap</th>
            <th>Waarde</th>
            <th>Bewerk</th>
        </tr>
        </thead>
        <tbody>

        ...

        <tr>
            <td><img class="ruimteNaam" src="../Images/Beamer.png" alt=""/>Beamer</td>
            <td>{{getBeamerString()}}</td>
            <td><img class="edit" src="../Images/Edit.png" alt=""/></td>
        </tr>

        ...

        </tbody>
    </table>
</section>

currentRuimte(영어로 CurrentRoom)는 내 mongoDB에서 해당 데이터를 가져오는 리소스 서비스를 사용하여 값을 얻는 범위 정의 변수입니다.

function RuimteController($scope, $routeParams, Ruimte) {

    $scope.currentRuimte = Ruimte.get({
        ruimteNaam: $routeParams.ruimteNaam
    });

    $scope.getBeamerString = function () {
        var beamer = $scope.currentRuimte.beamer;
        if(beamer.aanwezig == 'Ja'){
            return beamer.typeBeamer + ' (lamp: ' + beamer.datumLamp + ')';
        }else{
            return '-';
        }
    }
}

바타랑을 사용하여 스코프를 검사하면 다음과 같은 결과가 나옵니다.

enter image description here

오류가 발생하는 이유는 무엇이며 출력은 여전히 정확한 이유는 무엇입니까?오류가 발생하는 것을 방지할 수 있는 방법이 있습니까?가능한 많이 수정해주세요, 저는 앵글이 처음이라서요.일반적으로 JS와 자바스크립트 그리고 나의 스킬셋을 확장하려고 합니다.

문제는.

$scope.currentRuimte = Ruimte.get({
    ruimteNaam: $routeParams.ruimteNaam
});

비동기 작업입니다.$scope.currentRuimte이 호출이 반환될 때 빈 개체가 되며, 얼마 후 데이터를 사용할 수 있게 되면 HTTP 응답으로 채워집니다.

이는 뷰가 처음 렌더링될 때$scope.currentRuimte할 것입니다.{}, 그러므로$scope.currentRuimte.beamer할 것입니다.undefined, 그래서 이 행은:

var beamer = $scope.currentRuimte.beamer;
if(beamer.aanwezig == 'Ja'){ /* <-- undefined.aanwezig ! */
}

예외를 제기할 겁니다당신은 이 문제를 해결할 수 있습니다.beamer먼저 진실입니다.

$scope.getBeamerString = function () {
    var beamer = $scope.currentRuimte.beamer;
    if(beamer && beamer.aanwezig == 'Ja'){
        return beamer.typeBeamer + ' (lamp: ' + beamer.datumLamp + ')';
    }else{
        return '-';
    }
}

언급URL : https://stackoverflow.com/questions/20432127/angularjs-interpolation-error