17.01.2017, 16:30
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 65
|
|
Как в angularjs соединиться с базой данных (на примере todo-list ниже)?
В данном примере реализовал отображение данных из json-файла, теперь нужно отображение данных из базы данных. Где-то что-то делаю не так, помогите.
app.js
Код:
|
var app = angular.module('todoList',[]);
app.controller('TodoController', ['$scope', '$http', function($scope, $http) {
$scope.todoslist = list;
$scope.addTodo = function() {
$scope.todoslist.push({
"id": ""+$scope.todoslist.length + 1,
"description": ""+$scope.newTodo,
"completed": "false"
});
};
$scope.deleteTodo = function (todo) {
if (''+todo.completed === "true"){
$scope.todoslist.splice($scope.todoslist.indexOf(todo), 1);
}
};
$scope.markAll = function (completed) {
$scope.todoslist.forEach(function (todo) {
todo.completed = completed;
});
};
}]);
var list = [
{"id":"1","description":"text 1","completed":"false"},
{"id":"2","description":"text 2","completed":"false"},
{"id":"3","description":"text 3","completed":"false"},
{"id":"4","description":"text 4","completed":"false"},
{"id":"5","description":"text 5","completed":"false"}
];
})(); |
todo-list.js
Код:
|
<!DOCTYPE html>
<html lang="ru" ng-app="todoList">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script>
</script>
</head>
<body>
<div ng-controller="TodoController">
<input type="checkbox" ng-model="statusChecked" ng-click="markAll(statusChecked)"><b>Список всех дел</b>
<ul>
<li ng-repeat="todo in todoslist">
<div>
<input type="checkbox" ng-model="todo.completed">
<label ng-click="showBlock = ! showBlock">{{todo.description}}</label>
<a href="" ng-click="deleteTodo(todo)">delete</a>
<a href="" ng-click="showBlock = ! showBlock">edit</a>
<div ng-show="showBlock">
<input ng-model="todo.description">
</div>
</div>
</li>
</ul>
<div>
<form id="todo-form" ng-submit="addTodo()">
<input id="new-todo" placeholder="Что нужно сделать?" ng-model="newTodo" autofocus>
<div>
{{newTodo}}
</div>
</form>
</div>
</div>
</body>
</html> |
Делал так (но не работает, где-то что-то делаю не так):
Код:
|
(function(){
var app = angular.module('todoList',[]);
app.controller('TodoController', ['$scope', '$http', function($scope, $http) {
// $scope.todoslist = list;
$scope.todoslist = [];
$http.get('/anguler-tasks/js/getTodoData.json')
.then(function(data) {
$scope.todoslist = data;
},
function(err) {
res = err;
});
$scope.addTodo = function() {
$scope.todoslist.push({
"id": ""+$scope.todoslist.length + 1,
"description": ""+$scope.newTodo,
"completed": "false"
});
};
$scope.deleteTodo = function (todo) {
if (''+todo.completed === "true"){
$scope.todoslist.splice($scope.todoslist.indexOf(todo), 1);
}
};
$scope.markAll = function (completed) {
$scope.todoslist.forEach(function (todo) {
todo.completed = completed;
});
};
}]);
})(); |
|
|
17.01.2017, 17:07
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Сообщение от okuznetsov1
|
реализовал отображение данных из json-файла
|
Где json-файл не вижу?
|
|
17.01.2017, 18:09
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
okuznetsov1,
$http.get('/anguler-tasks/js/getTodoData.json')
.then(function(response) {
$scope.todoslist = response.data;
},
function(err) {
res = err;
});
|
|
17.01.2017, 18:45
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
okuznetsov1, вот destus реализовал отображение данных из json-файла в отличии от тебя, теперь для отображение данных из базы данных:
getTodoData.php
<?php
// ...
// ... преобразуем данные из базы в структуру вида $list ...
// ...
$list = array(
array("id" => "1", "description" => "text 1", "completed" => "false"),
array("id" => "2", "description" => "text 2", "completed" => "false"),
array("id" => "3", "description" => "text 3", "completed" => "false")
);
header('Content-Type: application/json');
echo json_encode($list);
|
|
17.01.2017, 19:35
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 65
|
|
destus извиняюсь, забыл привести json -файл.
>по поводу: response.data;
видимо сегодня нужно заканчивать с работой, наверное перетрудился.
спасибо большое, очень помогли
|
|
18.01.2017, 12:26
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
okuznetsov1, так дело не в json-файле как таковом, а в том что ты массив в переменной list называешь json-файлом, но это не так, json - это строка, json-файл - это файл с контентом этой строкой.
|
|
18.01.2017, 15:26
|
Аспирант
|
|
Регистрация: 02.11.2016
Сообщений: 65
|
|
у себя в сценарии разумеется я делаю так:
$http.get('/anguler-tasks/getTodoData.php')
но для данного топика я указал "getTodoData.json" - по сути это тоже самое (тот же самый json-формат)
|
|
18.01.2017, 17:35
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
okuznetsov1, ясно, то есть реализовал отображение имени файла в коде, а я почему то подумал что "реализовал отображение данных из json-файла", наверное это тоже то же самое, в таком случае стоило бы более точно формулировать вопросы.
|
|
|
|