Предположим, у вас есть большой проект, написанный на c ++, который содержит тысячу файлов .cpp и тысячу файлов .h. И давайте предположим, что проект также зависит от десяти статических библиотек. Скажем, мы работаем над Windows, и мы строим наш проект в Visual Studio 20xx. Когда вы нажимаете Ctrl + F7 Visual Studio, чтобы начать компиляцию всего решения (предположим, что у нас есть только один проект в решении)
В чем смысл компиляции?
Второй этап компиляции выполняется Linker.Linker должен объединить весь объектный файл и построить окончательно вывод (который может быть исполняемым или библиотекой)
Шаги при связывании проекта
error LNK2001: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ)
Наблюдение
Как решить эту ошибку
Ошибка времени компилятора:
Ошибка времени компоновщика
#pragma once
, чтобы компилятор не включал один заголовок если он уже был включен в текущий .cpp, который скомпилирован Я бы использовал таблицу и реализовал разбиение на страницы в контроллере, чтобы контролировать, сколько показано, и кнопки для перехода на следующую страницу. Этот скрипт может вам помочь.
[/g1]
<table class="table table-striped table-condensed table-hover">
<thead>
<tr>
<th class="id">Id <a ng-click="sort_by('id')"><i class="icon-sort"></i></a></th>
<th class="name">Name <a ng-click="sort_by('name')"><i class="icon-sort"></i></a></th>
<th class="description">Description <a ng-click="sort_by('description')"><i class="icon-sort"></i></a></th>
<th class="field3">Field 3 <a ng-click="sort_by('field3')"><i class="icon-sort"></i></a></th>
<th class="field4">Field 4 <a ng-click="sort_by('field4')"><i class="icon-sort"></i></a></th>
<th class="field5">Field 5 <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;
};
Лучшее простое решение для плагинов для разметки.
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']);
и все, что необходимо для разбивки на страницы.
Может быть полезно для кого-то.
Вот мое решение. Решение @Maxim Shoustin имеет некоторые проблемы с сортировкой. Я также завершаю все это директивой. Единственная зависимость - это UI.Bootstrap.pagination, которая отлично справилась с разбиением на страницы.
Здесь plunker
Я использую это решение:
Это немного более кратким, поскольку я использую: ng-repeat="obj in objects | filter : paginate"
для фильтрации строк. Также он работал с $ resource:
здесь я решил проблему с разбивкой по углам 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;
}
};
Это самый простой пример, который я нашел для разбивки на страницы! http://code.ciphertrick.com/2015/06/01/search-sort-and-pagination-ngrepeat-angularjs/