![shaping-up-with-angular-js-83ceb89bd5255](http://webcf.waybackmachine.org/web/20140603203436im_/http://habrastorage.org/files/b56/3d5/5c2/b563d55c2a0446f39e3cef67f9650b30.png)
В данное время прохожу курс по Ангулару на codeschool и параллельно читаю туториал на angularjs.org.
Чего не могу понять - так это каким образом организовать сохранение данных?
Проходя туториал на angularjs.org - я только понял как получать данные. По отправке информации нету.
Также интересно - Скажем у меня есть приложение - стандартное "Todo Application" что будет если данные которые добавит пользователь не отправятся (скажем если у юзера неожиданно отрубился инет), но при этом у него будут отображены. В принципе я понимаю, что можно сделать чтобы данные появляются на его странице только после доставки на сервер, но тогда по идее будет небольшая задержка из-за ожидания доставки до сервера (если я конечно всё правильно понимаю).
Бэкэнд хочу организовать на php (планирую использовать микрофреймворк - silex или slim) и mysql.
Вот если что мой код для todo application делал его по туториалу в нете. Код вытаскивает список дел, с файла todos.json .
<!doctype html>
<html ng-app='todo'>
<head>
<meta charset ='utf-8'>
<title>Todo App</title>
<style>
li {
list-style-type: none;
}
.done {
text-decoration: line-through;
color: #ccc;
}
</style>
</head>
<body>
<div ng-controller="todoController">
<form name='form' ng-submit='addTodo()'>
<input type='text' name='newTodo' ng-model='newTodo' required />
<button ng-disabled='frm.$invalid'>Go</button>
</form>
<button ng-click='clearCompleted()'>Clear Completed</button>
<ul>
<li ng-repeat='todo in todos'>
<input type='checkbox' ng-model='todo.done'/>
<span ng-class="{'done':todo.done}">{{todo.title}}</span>
</li>
</ul>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
<script>
var todo = angular.module('todo', []);
todo.controller('todoController', function($scope, $http) {
$http.get('todos/todos.json').success(function(data) {
$scope.todos = data;
});
$scope.addTodo = function() {
$scope.todos.push({'title': $scope.newTodo, 'done': false});
$scope.newTodo = '';
};
$scope.clearCompleted = function() {
$scope.todos = $scope.todos.filter(function(item) {
return !item.done;
});
};
});
</script>
</body>
</html>
Update
Попробовал запилить взаимодействие с сервером. На компе стоит xampp, в качестве бэкэнда выступает PHP(Codeigniter) + MySQL. Получаются такие две проблемы:
- када вручную останавливаю MySQL - при пометке задания как выполненного - оно становится выполненным в браузере, но в БД изменение не сохраняется. При последующем включении MySQL и перезагрузке страницы - все отметки слетают, потому что вытаскивается значение из БД.
- када добавляю новые задания - они появляются, только при успешном отзыве от сервера, то есть преимущество ангулара слетает на нет, потому что из-за небольшого лага приложение перестаёт быть похожим на нативное.
P.S. заранее извиняюсь если где что не так сформулировал.