Ich möchte etwas HTML in einer Szene anzeigen (ein Bild von einem Mann oder einer Frau), abhängig vom Geschlecht der Person, die auf meiner Website eingeloggt ist. Die Anweisung ng-bind-html funktioniert, wenn ich "imageToLoad" statisch definiere. Es funktioniert jedoch nicht, wenn meine zu bindende HTML-Datei durch eine Funktion definiert ist.AngularJS: ng-bind-html abhängig von der Variablen
Die Konsole sagt mir: Typeerror: $ scope.getHtml ist keine Funktion
Hier ist meine vereinfachte Code:
HTML:
<div id="img-container" ng-controller="sceneCtrl" ng-bind-html="imgToLoad">
</div>
JS:
.controller('sceneCtrl', function($scope, $http, $sce){
/* This works
** $scope.imgToLoad = $sce.trustAsHtml('<img id="over2" src="imgMale.png"/>');
*/
$scope.imgToLoad=$scope.getHtml();
$scope.getHtml=function(){
var gender='male';
if(gender=='male'){
return $sce.trustAsHtml('<img id="over2" src="imgMale.png"/>');
}
else if(gender=='female'){
return $sce.trustAsHtml('<img id="over2" src="imgFemale.png"/>');
}
return 'error getHtml';
}
})
Ich vereinfachte die JS mit einer Variablen sagen die Geschlecht, aber schließlich wird das Geschlecht vom Backend aus einer Datenbank gegeben.
Nach meinen Recherchen muss ich möglicherweise "kompilieren" verwenden, aber ich habe keine Ahnung, wie das funktioniert.
Danke für Ihre Hilfe!
Haben Sie einen Fehler erhalten? –
Versuchen Sie, die Funktionsdefinition vor die folgende Zeile zu setzen: $ scope.imgToLoad = $ scope.getHtml(); –