Все:
Интересно, как я могу установить оператор OR в строке HTML в шаблоне Angualar, например:
<div>{{value || <h6>No Header for now.</h6>}}</div>
Логика заключается в том, что если значение является строкой, но не определено, мы показываем текст значения, в противном случае мы показываем ошибку "Нет заголовка для сейчас", завернутую в <h6>
.
Я не знаю, почему это выражение нельзя правильно интерпретировать?
благодаря
Это можно решить с помощью ng-if
:
<div ng-if="value">value</div>
<div ng-if="!value"><h6>No Header for now.</h6></div>
Вы можете добавлять определенные атрибуты (например, class
) и/или директивы (например, ng-click
) для каждого <div>
.
Проблема с использованием одного элемента заключается в том, что вы должны повторять свое условие несколько раз:
<div ng-class="{ value: 'class1', !value: 'class2' }"
ng-click="value ? action1() : action2()"
ng-bind-html="value || html">
</div>
Вы должны поместить строку, а не выражение: <h6>No Header for now.</h6>
- недопустимое выражение js. '<h6>No Header for now.</h6>'
- строка и может отображаться в {{}}.
<div>{{value || '<h6>No Header for now.</h6>' }}</div>
или
<div>{{value != null? value: '<h6>No Header for now.</h6>' }}</div>
Я убежден, что 2-й работает.
РЕДАКТИРОВАТЬ:
Если вы хотите добавить html-код в {{}}, это еще одна проблема. См. AngularJS: Вставьте HTML в поле зрения, фильтр "sanitize" во втором ответе должен помочь вам (назовите {{ '<h1>test</h1>' | sanitize }}
и он должен работать.
EDIT 2:
В файле js:
angular.module('yourapp')
.filter("sanitize", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
}
}]);
Ввиду:
<div>{{value || '<h6>No Header for now.</h6>' | sanitize }}</div>
Не знаю, нужен ли вам 'ngResource' для использования $ sce, если он не работает, вам нужно будет установить угловой ресурс:/