AngularJS Erreur D'Interpolation
Je suis de l'affichage des propriétés d'une pièce dans le cadre d'une gestion de la salle de application que je suis en train de travailler sur, c'est la sortie:
Comme vous pouvez le voir, la valeur de Projecteur (Projecteur en anglais) est "Sony (lampe 01/12/2013)". Cette sortie est correcte mais quand j'ai ouvert ma console, je vois quelques erreurs concernant l'interpolation:
Plus grande résolution:
"Can't interpolate: {{getBeamerString()}} TypeError: Cannot read property 'aanwezig' of undefined"
C'est mon html partielle:
<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 en anglais) est un champ d'application défini la variable qui reçoit sa valeur à l'aide d'un service de ressources qui obtient les données de mon 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 '-';
}
}
}
Quand j'ai inspecter le champ d'application à l'aide de batarang j'obtiens ceci:
Pourquoi j'obtiens l'erreur et pourquoi dois-je encore obtenir le bon de sortie?
Est-il un moyen pour éviter que l'erreur se produise? S'il vous plaît corrigez-moi autant que vous le pouvez,
Je suis assez nouveau à AngularJS et Javascript en général et d'essayer d'élargir mes compétences.
Vous devez vous connecter pour publier un commentaire.
Le problème est que
Est une opération asynchrone.
$scope.currentRuimte
va être un objet vide lors de cet appel retourne, et, quelque temps plus tard, lorsque les données sont disponibles, il sera rempli avec de la réponse HTTP.Cela signifie que la première fois que votre vue est rendue,
$scope.currentRuimte
va être{}
, et donc$scope.currentRuimte.beamer
va êtreundefined
, donc cette ligne:va faire une exception. Vous pouvez résoudre ce problème en faisant en sorte que
beamer
est truthy première: