Нужно разбиение на страницы, когда я использую несколько ng-repeat в таблице? [Дубликат]

Предположим, у вас есть большой проект, написанный на c ++, который содержит тысячу файлов .cpp и тысячу файлов .h. И давайте предположим, что проект также зависит от десяти статических библиотек. Скажем, мы работаем над Windows, и мы строим наш проект в Visual Studio 20xx. Когда вы нажимаете Ctrl + F7 Visual Studio, чтобы начать компиляцию всего решения (предположим, что у нас есть только один проект в решении)

В чем смысл компиляции?

  • Visual Studio выполните поиск в файле .vcxproj и начните компилировать каждый файл с расширением .cpp. Порядок компиляции не определен. Поэтому вы не должны предполагать, что файл main.cpp скомпилирован сначала
  • . Если файлы .cpp зависят от дополнительных файлов .h, чтобы найти символы, которые могут или не могут быть определены в файл .cpp
  • Если существует один .cpp-файл, в котором компилятор не смог найти один символ, ошибка времени компилятора вызывает сообщение Символ x не может быть найден
  • Для каждого файла с расширением .cpp создается объектный файл .o, а также Visual Studio записывает вывод в файл с именем ProjectName.Cpp.Clean.txt , который содержит все объектные файлы, которые должны обрабатывается компоновщиком.

Второй этап компиляции выполняется Linker.Linker должен объединить весь объектный файл и построить окончательно вывод (который может быть исполняемым или библиотекой)

Шаги при связывании проекта

  • Разберите все объектные файлы и найдите определение, которое было объявлено только в заголовках (например: Код одного метода класса, как указано в p повторные ответы или событие инициализация статической переменной, которая является членом внутри класса)
  • Если один символ не может быть найден в объектных файлах, он также выполняется в дополнительных библиотеках. Для добавления новой библиотеки в project Свойства конфигурации -> Каталоги VC ++ -> Библиотечные каталоги, и здесь вы указали дополнительную папку для поиска библиотек и Свойства конфигурации -> Linker -> Input для указания имени библиотеки. -Если линкер не смог найти символ, который вы пишете в одном .cpp, он вызывает ошибку времени компоновщика, которая может звучать как error LNK2001: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ)

Наблюдение

  1. После того, как Linker найдет один символ, он не ищет в других библиотеках для него
  2. Порядок ссылок на библиотеки имеет значение.
  3. Если Linker находит внешний символ в одной статической библиотеке, он включает в себя символ на выходе проекта. Однако, если библиотека является общей (динамической), он не включает в себя код (символы) на выходе, но Run-Time могут возникнуть сбои

Как решить эту ошибку

Ошибка времени компилятора:

  • Убедитесь, что вы правильно выполнили синтаксический проект c ++.

Ошибка времени компоновщика

  • Определите все символы, которые вы объявляете в ваших файлах заголовков.
  • Используйте #pragma once, чтобы компилятор не включал один заголовок если он уже был включен в текущий .cpp, который скомпилирован
  • Убедитесь, что ваш exter nal library не содержит символов, которые могут вступать в конфликт с другими символами, которые вы определили в ваших файлах заголовков.
  • Когда вы используете шаблон, чтобы убедиться, что вы включаете определение каждой функции шаблона в файл заголовка для разрешения компилятор для создания соответствующего кода для любых экземпляров.
33
задан gogogadgetinternet 16 October 2013 в 22:03
поделиться

7 ответов

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

example of the pagination [/g1]

 <table class="table table-striped table-condensed table-hover">
                <thead>
                    <tr>
                        <th class="id">Id&nbsp;<a ng-click="sort_by('id')"><i class="icon-sort"></i></a></th>
                        <th class="name">Name&nbsp;<a ng-click="sort_by('name')"><i class="icon-sort"></i></a></th>
                        <th class="description">Description&nbsp;<a ng-click="sort_by('description')"><i class="icon-sort"></i></a></th>
                        <th class="field3">Field 3&nbsp;<a ng-click="sort_by('field3')"><i class="icon-sort"></i></a></th>
                        <th class="field4">Field 4&nbsp;<a ng-click="sort_by('field4')"><i class="icon-sort"></i></a></th>
                        <th class="field5">Field 5&nbsp;<a ng-click="sort_by('field5')"><i class="icon-sort"></i></a></th>
                    </tr>
                </thead>
                <tfoot>
                    <td colspan="6">
                        <div class="pagination pull-right">
                            <ul>
                                <li ng-class="{disabled: currentPage == 0}">
                                    <a href ng-click="prevPage()">« Prev</a>
                                </li>
                                <li ng-repeat="n in range(pagedItems.length)"
                                    ng-class="{active: n == currentPage}"
                                ng-click="setPage()">
                                    <a href ng-bind="n + 1">1</a>
                                </li>
                                <li ng-class="{disabled: currentPage == pagedItems.length - 1}">
                                    <a href ng-click="nextPage()">Next »</a>
                                </li>
                            </ul>
                        </div>
                    </td>
                </tfoot>
                <tbody>
                    <tr ng-repeat="item in pagedItems[currentPage] | orderBy:sortingOrder:reverse">
                        <td>{{item.id}}</td>
                        <td>{{item.name}}</td>
                        <td>{{item.description}}</td>
                        <td>{{item.field3}}</td>
                        <td>{{item.field4}}</td>
                        <td>{{item.field5}}</td>
                    </tr>
                </tbody>
            </table> 

Значение переменной scope.range в примере скрипта должно быть:

$scope.range = function (size,start, end) {
    var ret = [];        
    console.log(size,start, end);

       if (size < end) {
        end = size;
        if(size<$scope.gap){
             start = 0;
        }else{
             start = size-$scope.gap;
        }

    }
    for (var i = start; i < end; i++) {
        ret.push(i);
    }        
     console.log(ret);        
    return ret;
};
68
ответ дан Kevin STS 27 August 2018 в 22:33
поделиться

Лучшее простое решение для плагинов для разметки.

https://ciphertrick.com/2015/06/01/search-sort-and-pagination-ngrepeat-angularjs/# comment-1002

вам нужно будет заменить ng-repeat на пользовательскую директиву.

<tr dir-paginate="user in userList|filter:search |itemsPerPage:7">
<td>{{user.name}}</td></tr>

Внутри страницы вам просто нужно добавить

<div align="center">
       <dir-pagination-controls
            max-size="100"
            direction-links="true"
            boundary-links="true" >
       </dir-pagination-controls>
</div>

В вашем index.html load

<script src="./js/dirPagination.js"></script>

В вашем модуле просто добавьте зависимости

angular.module('userApp',['angularUtils.directives.dirPagination']);

и все, что необходимо для разбивки на страницы.

Может быть полезно для кого-то.

2
ответ дан Hema 27 August 2018 в 22:33
поделиться

Таблица с papging, sort и filter

См. полный пример в Фильтр сортировки таблицы Angularjs и пейджинг

2
ответ дан Lewis Hai 27 August 2018 в 22:33
поделиться

Вот мое решение. Решение @Maxim Shoustin имеет некоторые проблемы с сортировкой. Я также завершаю все это директивой. Единственная зависимость - это UI.Bootstrap.pagination, которая отлично справилась с разбиением на страницы.

Здесь plunker

Вот github исходный код.

8
ответ дан maxisam 27 August 2018 в 22:33
поделиться

Я использую это решение:

Это немного более кратким, поскольку я использую: ng-repeat="obj in objects | filter : paginate" для фильтрации строк. Также он работал с $ resource:

http://plnkr.co/edit/79yrgwiwvan3bAG5SnKx?p=preview

12
ответ дан Nuno Silva 27 August 2018 в 22:33
поделиться

здесь я решил проблему с разбивкой по углам jS с некоторыми улучшениями на стороне сервера + просмотр конца, вы можете проверить код, который будет более эффективным. все, что мне нужно сделать, это положить два значения начального номера и конечного числа, он будет представлять индекс возвращаемого массива json.

вот угловая

var refresh = function () {
    $('.loading').show();
    $http.get('http://put.php?OutputType=JSON&r=all&s=' + $scope.CountStart + '&l=' + $scope.CountEnd).success(function (response) {
        $scope.devices = response;


        $('.loading').hide();
    });
};

, если вы внимательно посмотрите $ scope.CountStart и $ scope.CountStart - два аргумента, которые я передаю с помощью api

вот код для следующей кнопки

$scope.nextPage = function () {
    $('.loading').css("display", "block");
    $scope.nextPageDisabled();


    if ($scope.currentPage >= 0) {
        $scope.currentPage++;

        $scope.CountStart = $scope.CountStart + $scope.DevicePerPage;
        $scope.CountEnd = $scope.CountEnd + $scope.DevicePerPage;
        refresh();
    }
};

вот код предыдущей кнопки

$scope.prevPage = function () {
    $('.loading').css("display", "block");
    $scope.nextPageDisabled();

    if ($scope.currentPage > 0) {
        $scope.currentPage--;

        $scope.CountStart = $scope.CountStart - $scope.DevicePerPage;
        $scope.CountEnd = $scope.CountEnd - $scope.DevicePerPage;

        refresh();

    }
};

, если номер страницы равен нулю, моя предыдущая кнопка будет деактивирована

   $scope.nextPageDisabled = function () {

    console.log($scope.currentPage);

    if ($scope.currentPage === 0) {
        return false;
    } else {
        return true;
    }
};
7
ответ дан nur farazi 27 August 2018 в 22:33
поделиться

Это самый простой пример, который я нашел для разбивки на страницы! http://code.ciphertrick.com/2015/06/01/search-sort-and-pagination-ngrepeat-angularjs/

15
ответ дан Santosh 27 August 2018 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: