Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Как "перечитать" данные контроллера (https://javascript.ru/forum/angular/53391-kak-perechitat-dannye-kontrollera.html)

ksa 02.02.2015 10:45

Как "перечитать" данные контроллера
 
Пытаюсь представить решение вроде бы простой задачи...
У меня в БД есть табличка (допустим имен) в которой достаточно много записей. Все их точно нет смысла качать разом... Поэтому нужно сделать страничку с листанием тех данных.

Вот пример такой порции

<!DOCTYPE html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.box {
	border: 1px solid;
}
</style>
<script type='text/javascript'>
function ListCtrl($scope) {
	$scope.names = ['Igor', 'Misko', 'Vojta'];
};
</script>
</head>
<body> 
<button>Up</button>
<div ng-controller="ListCtrl" class='box'>
	<ol>
		<li ng-repeat="name in names">{{name}}</li>
	</ol>
</div>
<button>Down</button>
</body>
</html>

Для демонстрации контроллер поместил прямиком в страницу. Но "в жизни" это отдельный файл, который генерится серверным языком...

Вопрос в следующем:
Как, нажимая на кнопки навигации, перечитать данные контроллера? Т.е. прочитать очередную порцию данных из моей БД?

nerv_ 02.02.2015 11:06

Цитата:

Сообщение от ksa
Как, нажимая на кнопки навигации, перечитать данные контроллера? Т.е. прочитать очередную порцию данных из моей БД?

Отправлять запросы на сервер, например, с помощью $http
Для пагинации можешь взять это. А можешь не брать :)

ksa 02.02.2015 11:18

Цитата:

Сообщение от nerv_
Отправлять запросы на сервер, например, с помощью $http

А как мне, получив ответ сервера, изменить значение у $scope.names в нужном мне контроллере?
Т.е. я пока даже примеров реализации этого не нашел... :( Я только в стадии чтения этого сайта... :)

На моем примере это как-то можно продемонстрировать?

nerv_ 02.02.2015 11:28

читай доку, смотри примеры
function ListCtrl($scope, $http) {
    $http.post('/', {}).success(function(response) {
        $scope.names = response;
    });
};

ksa 02.02.2015 11:36

nerv_, вроде понял... :yes: Вот пример сварганил. :)

<!DOCTYPE html>
<html ng-app>
<head>
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<!--
<script src='http://code.jquery.com/jquery-latest.js'></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.box {
	border: 1px solid;
}
</style>
<script type='text/javascript'>
function ListCtrl($scope) {
	$scope.up = function() {
		// тут делаем запрос серверу
		$scope.names = ['Vasya', 'Petya', 'Kolya'];
	};
	$scope.dn = function() {
		// тут делаем запрос серверу
		$scope.names = ['Vera', 'Nadegda', 'Ira'];
	};
	$scope.names = ['Igor', 'Misko', 'Vojta'];
};
</script>
</head>
<body ng-controller="ListCtrl"> 
<button ng-click='up()'>Up</button>
<div class='box'>
	<ol>
		<li ng-repeat="name in names">{{name}}</li>
	</ol>
</div>
<button ng-click='dn()'>Down</button>
</body>
</html>


Часовой пояс GMT +3, время: 19:49.