Я только начал использовать angularjs, и я пытаюсь подключить backpress Wordpress к переднему концу Angularjs.
это мой index.html
<!DOCTYPE html>
<html ng-app="applicazioneIndex">
<head>
<title>AngularJS GET request with PHP</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular-sanitize.min.js"></script>
<link data-require="[email protected]" data-semver="2.3.2" rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.11.0/ui-bootstrap-tpls.min.js"></script>
<script data-require="[email protected]*" data-semver="1.2.14" src="http://code.angularjs.org/1.2.14/angular-resource.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
<meta charset="UTF-8">
</head>
<body >
<div class="row">
<div class="container">
<div ng-controller="ApplicazioneController">
<input type="text" ng-model="searchFilter" class="form-control">
<table class="table table-hover">
<thead>
<tr>
<th>{{currentPage}} di {{totalItems}} {{watchPage}}</th>
<th>post_content</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="post in filteredArticoli | filter:searchFilter">
<td>{{post.title}}</td>
<td><a ng-href="{{post.featured_image.source}}"><img ng-src="{{post.featured_image.attachment_meta.sizes.thumbnail.url}}"></a></td>
<td ng-bind-html="post.excerpt"></td>
</tr>
</tbody>
</table>
<pagination boundary-links="true"
max-size="5"
items-per-page="itemsPerPage"
total-items="totalItems"
ng-model="currentPage"
ng-change="pageChanged(page)"></pagination>
</div>
</div>
</div>
</body>
</html>
и это мой script.js с угловым кодом (я знаю, что это все в одном файле, и это плохо)
var req = new XMLHttpRequest();
var URL = "/wp-json/posts";
req.open('GET', URL, false);
req.send(null);
var maxpagine = req.getResponseHeader("X-WP-TotalPages");
var totarticoli = req.getResponseHeader("X-WP-Total");
var currentPage = '';
var newPage = '';
var app = angular.module('applicazioneIndex', ['ui.bootstrap','ngSanitize','ngResource']);
app.controller('ApplicazioneController', function ($scope, applicazioneFactory) {
applicazioneFactory.get({ id: 1 }, function(data) {
$scope.posts = data;
alert(posts);
});
$scope.articoli = applicazioneFactory.query();
$scope.itemsPerPage = 3;
$scope.currentPage = 1;
$scope.totalItems = totarticoli;
$scope.articoli.$promise.then(function() {
$scope.$watch('currentPage + itemsPerPage', function() {
var begin = (($scope.currentPage - 1) * $scope.itemsPerPage),
end = begin + $scope.itemsPerPage;
$scope.filteredArticoli = $scope.articoli.slice(begin, end);
});
});
$scope.$watch('currentPage', function(newPage){
$scope.watchPage = newPage;
alert(newPage);
});
});
app.factory('applicazioneFactory', function ($resource) {
return $resource("/wp-json/posts?page=" + currentPage);
});
Pagination работает отлично , Я получаю значения из XMLHttpRequest, загружается меню начальной загрузки, но я не могу заполнять контент разными JSON.
Моя цель - загрузить различные файлы JSON с использованием значения $currentPage
, изменяясь при работе с постраничной разбивкой (для этого есть предупреждение, чтобы вывести текущее значение).
с помощью $scope.$watch('currentPage', function(newPage)
я могу получить CurrentPage значение внутри контроллера
Я также Plunker здесь http://plnkr.co/edit/hplfuBIOLDHUgUp6lU0A где я положил статический файл JSON вместо динамического RESTful URL запроса.
Как я могу поместить значение $currentPage
в app.factory?
Я думаю, что загрузка данных всех записей вместе должна быть предотвращена, потому что в случае загрузки тысяч статей требуется слишком много времени загрузки: разделение их на меньшие json-файлы полезно. в любом случае, за ваш быстрый ответ –
Я согласен! Мое решение в порядке, за меньшее количество сообщений. Ваш REST-интерфейс должен иметь возможность контролировать количество заданных сообщений через параметризованные HTTP-запросы. Таким образом, вы можете загружать требуемые записи с динамическим нажатием на разбиение на страницы. Пример для REST-Call: 'http: ///wp-json/posts/all? Start = 1 & end = 3' –
Уважаемый Sven Pagination, используя [link] (http://angular-ui.github.io/bootstrap /) работает отлично. То, что не работает, - это получить значение '$ currentPage' внутри app.factory, это возможно в контроллере с использованием $ watch, и я тестирую его с помощью предупреждения' $ scope. $ Watch ('currentPage', function (newPage) { $ scope.watchPage = newPage; alert (newPage); 'но я не могу получить одно значение даже при использовании' $ watch' –