AngularJS: Как не отображать атрибут, если значение не определено
У меня есть шаблон, используемый в директиве, похожий на:
<tr>
<th ng-repeat="col in tableSpec" st-sort="{{col.sortField}}"></th>
</tr>
Атрибут st-sort не должен отображаться (вообще без атрибута), когда col.sortField не существует.
Я читал об опции 'allOrNothing' в $interpolate, ведьма делает то, что я хочу, но я не делаю, если можно указать эту опцию при использовании нотации {{ }}.
Я также читал о ngAttr и пытаюсь использовать это обозначение ng-attr-st_sort="{{col.sortField}}", но безуспешно.
Любая помощь будет принята с благодарностью.
Жан-Марк
1 ответ
Как я понимаю, ваша директива stSort имеет шаблон. Вы можете добавить директиву ngHide к корневому элементу шаблона и условие $ наблюдателя, если col.sortField существует или нет?
.directive('stSort', [function () {
return {
restrict: 'EA',
template: '<div ng-hide="$notRender"></div>',
link: function(scope, element, attrs) {
attrs.$observe('stSort', function(newVal, OldVal){
if(!newVal)
scope.$notRender = true
else
scope.$notRender = false;
//do your staff
})
}
};
}])