Отображать строки таблицы в angularjs, если данные существуют

0

Я хочу иметь таблицу, состоящую из 3 столбцов, код выглядит так:

    <table class="table-striped table-bordered table-condensed">
    <tbody>

    <tr ng-if="$index%3==0" ng-repeat="permission in vm.parent.getAllPermissions(category)">
    <td ng-repeat="i in [0,1,2]" class="col-xs-2">

    <span>

    <input type="checkbox" checklist-model="vm.data.permissions" checklist-value="vm.parent.getPermission(category,$parent.$index+i)">                              {{vm.parent.getPermissionTitle(category,$parent.$index+i) || " "}}

</span> 
</td> 
</tr>
</tbody>
</table>

Это отлично работает, за исключением небольшой проблемы.

Изображение 174551

Просто не хватает данных json для заполнения 3 строк, поэтому 2 флажка отображаются пустым

То, что я пробовал, пишет что-то вроде

vm.hasPermission = function(category, index) {
    var permissions = vm.getAllPermissions(category);
    return permissions && index < permissions.length
};

И тогда что-то вроде

    <span>
    <input ng-if="vm.parent.hasPermission(category,$parent.$index+i)"type="checkbox"
 checklist-model="vm.data.permissions" checklist-
value="vm.parent.getPermission(category,$parent.$index+i)">                                                      {{vm.parent.getPermissionTitle(category,$parent.$index+i) || " "}}
    </span>

Он исправляет проблему, но не во всех таблицах, некоторые таблицы по-прежнему имеют пустые флажки.

Я получаю названия разрешений, подобные этому

vm.getPermissionTitle = function(category, index) {
    var permissions = vm.getAllPermissions(category);   
    if (index < permissions.length) {
     return i18n.get(permissions[index]);
    } else {
     return '';
    }
};

Я попытался удалить возвращение, не исправил его.

  • 0
    Я был бы признателен за исправление без дополнительных зависимостей, таких как ng-таблиц.
  • 0
    Не могли бы вы сделать живой пример?
Показать ещё 6 комментариев
Теги:

2 ответа

0
Лучший ответ

Решение

<table class="table-striped table-bordered table-condensed">
<tbody>
    <tr ng-if="$index%3==0" ng-repeat="permission in vm.parent.getAllPermissions(category)">
        <td ng-repeat="i in [0,1,2]" class="col-xs-2">
            <span ng-if="vm.parent.getPermission(category,$parent.$index+i)">
                <input type="checkbox" checklist-model="vm.data.permissions" checklist- value="vm.parent.getPermission(category,$parent.$parent.$index+i)">
    {{vm.parent.getPermissionTitle(category,$parent.$parent.$index+i)}}
</span>
</td>
</tr>
</tbody>
</table>

Итак, в основном {{vm.parent.getPermissionTitle(category,$parent.$parent.$index+i)}}

1

изменение:

<td ng-repeat="i in [0,1,2]" class="col-xs-2">
    <span>
        <input type="checkbox" checklist-model="vm.data.permissions" checklist-value="vm.parent.getPermission(category,$parent.$index+i)">                              {{vm.parent.getPermissionTitle(category,$parent.$index+i) || " "}}
    </span> 
</td>

для:

<td ng-repeat="i in [0,1,2]" class="col-xs-2">
    <span ng-if="vm.parent.getPermissionTitle(category,$parent.$index+i)!=''">
        <input type="checkbox" checklist-model="vm.data.permissions" checklist-value="vm.parent.getPermission(category,$parent.$index+i)">                              {{vm.parent.getPermissionTitle(category,$parent.$index+i)}}
    </span> 
</td>

если я хорошо понял ваш код и вашу проблему, vm.parent.getPermission(category,$parent.$index+i) возвращает текст (разрешение), поэтому просто проверьте, что он не пуст... он может также работать следующим образом:

<td ng-repeat="i in [0,1,2]" class="col-xs-2">
    <span ng-if="vm.parent.getPermissionTitle(category,$parent.$index+i)">
        <input type="checkbox" checklist-model="vm.data.permissions" checklist-value="vm.parent.getPermission(category,$parent.$index+i)">                              {{vm.parent.getPermissionTitle(category,$parent.$index+i)}}
    </span> 
</td>

потому что vm.parent.getPermission(category,$parent.$index+i) возвращающий ничего, может оценить false.

Я не пробовал.

  • 0
    это работало, но теперь везде, если нужно отобразить только две строки, будет отображаться третий пустой флажок, но в остальном он работает, просто остается небольшая ошибка
  • 0
    тогда ошибка не в коде, а в json, должен быть vm.parent.getPermissionTitle(category,$parent.$index+i) возвращающий пробел или невидимые символы ...
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню