Я хочу отобразить некоторые html на сцене (изображение мужчины или женщины), в зависимости от пола человека, зарегистрированного на моем сайте. Директива ng-bind-html работает, когда я определяю «imageToLoad» статически. Тем не менее, это не работает, если мой html для привязки определяется функцией.AngularJS: ng-bind-html в зависимости от переменной
Консоль говорит мне: TypeError: $ scope.getHtml не является функцией
Вот мой упрощенный код:
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';
}
})
Я упростил JS с переменной, указав, что пола, но в конечном итоге гендер будет предоставлен бэкэндом из базы данных.
Согласно моим исследованиям, мне, возможно, придется использовать «компиляцию», но я понятия не имею, как это работает.
Благодарим за помощь!
У вас возникли какие-либо ошибки? –
Попробуйте задать определение функции до следующей строки: $ scope.imgToLoad = $ scope.getHtml(); –