2013-07-29 2 views
1

Я немного виджет, который отображает некоторую информацию о пользователеПоказать манекен изображения, когда свойство не определено

<div id="this-is-me"> 
    <p class="userpic"><img src="/gfx/gui/{{ user.avatar }}" alt="{{ user.first_name + ' ' + user.last_name }}" width="75" height="75"></p> 
    <h6>{{ user.first_name + ' ' + user.last_name }}</h6> 
    <ul class="options white right inline"> 
     <li><a href="#/profile">Profiel bekijken</a></li> 
    </ul> 
</div> 

, как вы можете видеть, аватар визуализируется, но когда user.avatar пуст это приводит сломанная ссылка, дающая пользователю ошибку 404 на странице.

я пытался добавить логику дефолта внутри фигурных скобок, как так {{ user.avatar || 'missing-user.png' }}

есть правильный способ исправить это в угловой? Я не могу использовать ng-switch, поскольку это удаляет html, и этот виджет присутствует на странице до и после входа в систему. поэтому, если пользователь входит в систему, этот виджет должен повторно отобразить и по-прежнему отображать аватар ... Я считаю, что это невозможно с помощью ng-switch, поскольку это удаляет html и никогда не будет повторно отображаться.

+1

Вы пробовали 'ng-src' вместо' src'? Может работать с вашим примером интерполяции. –

+1

Я боюсь, но вы должны написать директиву для этого, и если вы просто не используете способ 404, просто используйте ng-src –

+0

спасибо за отзыв ng-src, я посмотрю, что документация не знала, что он существует – Sander

ответ

2

Вы можете использовать ng-switch, пожалуйста, попробуйте его здесь. Fiddle

<span ng-switch on="!!user.avatar"> 
    <img ng-switch-when="true" ng-src="/gfx/gui/{{ user.avatar }}" alt="{{ user.first_name + ' ' + user.last_name }}" width="75" height="75"> 
    <img ng-switch-when="false" ng-src="missing-user.png"> 
</span> 

$scope.$apply(function() { 
    console.log('done'); 
    $scope.user.avatar = "XXX"; 
}); 

Хитрость заключается в том, чтобы заставить преобразовать объект user.avatar в Boolean с помощью !!, а затем условие будет просто быть true или false.

+0

Как это работает при изменении user.avatar? Я имею в виду, что после входа пользователя в систему, а другой маршрут показывает его домашний экран, директиве необходимо обновить и показать другую часть equasion, но ваш оператор switch удалил этот html ... это мне не кажется правильным. .. – Sander

+0

Короче говоря, это из-за магии $ apply module. – zsong

Смежные вопросы