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

            })
        }
    };
}])
Другие вопросы по тегам