2013-06-19 3 views
2

Я работаю над приложением, где мне нужно создать отчет таблицы на основе пользовательского фильтра.Условные данные показать скрыть в Angularjs

И пользователь может фильтровать результат и отправлять новый запрос с использованием другого параметра. В зависимости от одного из флажков и списков результатов я должен показать скрытый столбец в таблице.

Как я могу реализовать угловым способом?

+1

http://docs.angularjs.org/api/ ng.directive: ngПоказать документы - ваш лучший друг;) –

+1

Это не то, что я хочу – arnold

+0

@arnold - вот что вам нужно. – SET

ответ

21

Вы можете использовать ng-show с условием, как это:

<select ng-model="filter"> 
    <option value="blah"></option> 
    <option value="foo"></option> 
</select> 
<table> 
    <tr> 
    <td>1</td> 
    <td ng-show="filter=='blah'">blah blah</td> 
    </tr> 
    <tr> 
    <td>2</td> 
    <td ng-show="filter=='blah'">foo foo</td> 
    </tr> 
</table> 
+0

Он сказал, что хочет скрыть столбцы, а не линии. И это намного сложнее :). – Blackhole

+5

Если вы хотите спрятать строки - примените его к 'tr', если вы хотите, чтобы скрытые столбцы были привязаны к' td'. Почему сложнее? Обновленный пример ответа. – SET

+1

@Blackhole, будет еще меньше кода, если вы будете использовать ng-repeat для строк. – SET

1

Отображение и скрытие столбцов кажется намного сложнее, чем это для меня. Это больше, чем просто применение условного атрибута ng-show к обработчику событий - по крайней мере, я не нашел эту идею работать должным образом.

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

http://entwicklertagebuch.com/blog/2013/11/datatable-with-fully-dynamic-columns-in-angularjs/

(Пример кода по ссылке)

function createTDElement(directive) { 
var table = angular.element('<table><tr><td ' + directive + '></td></tr></table>'); 
return table.find('td'); 
} 
app.directive('item', function($compile) { 
    function createTDElement(directive) { 
    var table = angular.element('<table><tr><td ' + directive + '></td></tr></table>'); 
    return table.find('td'); 
    } 

    function render(element, scope) { 
    var column, html, i; 
    for (i = 0; i < scope.columns.length; i++) { 
     column = scope.columns[i]; 
     if (column.visible) { 
     html = $compile(createTDElement(column.directive))(scope); 
     element.append(html); 
     } 
    } 

    } 

    return { 
    restrict: 'A', 
    scope: { 
     item: "=", 
     columns: "=" 
    }, 
    controller: function($scope, $element) { 
     $scope.$watch(function() { 
     return $scope.columns; 
     }, function(newvalue, oldvalue) { 
     if (newvalue !== oldvalue) { 
      $element.children().remove(); 
      render($element, $scope); 
      $compile($element.contents())($scope); 
     } 
     }, true); 
    }, 
    compile: function() { 
     return function(scope, element) { 
     render(element, scope); 
     } 

    } 
    }; 

}); 
0

Рассмотрим добавление условный стиль в <col/> с ng-style или ng-class

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