Я делаю почтовый запрос для отдыха api, а затем возвращаю данные, которые я отправляю вместе с идентификатором, затем добавляю его в таблицу, но таблица не обновляется.
$scope.addCategory = function(category){
$http.post('http://localhost/myappi/API/index.php/Api/categories',category).
success(function(data)
{
console.log('Data returned: ', data);
$scope.categories.push(data); //add it to the table ?
})
.error(function(err) {
console.log(err);
})
};
И это мой стол.
<table class="table table-striped">
<tr>
<th>Name</th><th>Action</th>
</tr>
<tr ng-repeat="category in categories">
<td>{{ category.name }}</td><td>
<button class="btn btn-warning" ng-click="editCategory(category)">Edit</button>
<button class="btn btn-danger" ng-click="deleteCategory(category.id)">Delete</button></td>
</tr>
</table>
Чтобы заполнить таблицу при загрузке страницы, у меня есть функция init, которая возвращает список категорий. Я мог бы изменить этот метод, чтобы он запускался всякий раз, когда пользователь сжимает данные, но, похоже, неэффективно получать все данные с сервера, когда я редактирую поле, например. Также, когда я удаляю категорию, данные удаляются правильно.
//Как заполняется таблица при загрузке страницы.
$scope.init = function() {
$http.get('http://localhost/myappi/API/index.php/Api/categories/').
success(function(data) {
$scope.categories = data;
console.log(data);
})
.error(function(err) {
console.log(err);
})
};
Как я могу закрыть этот вопрос? У меня было $ scope.categories = []; на передней панели контроллера.
Отвечая на вопрос, чтобы закрыть вопрос. Я забыл объявление категорий на передней панели контроллера, что привело к тому, что таблица не обновлялась. Я переместил его внутри функции init, и это решило его.
$scope.categories=[];
angular.module("app", []);
angular.module("app").controller("ctrl", function ($scope) {
$scope.categories = [];
$scope.addCategory = function () {
var data = { name: "newData" };
$scope.categories.push(data);
//$http.post('http://localhost/myappi/API/index.php/Api/categories', category).
// success(function (data) {
// console.log('Data returned: ', data);
// $scope.categories.push(data); //add it to the table ?
// })
// .error(function (err) {
// console.log(err);
// })
};
});
<!doctype html>
<html ng-app="app" ng-controller="ctrl">
<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<button ng-click="addCategory()">addCategory</button>
<table class="table table-striped">
<tr>
<th>Name</th>
<th>Action</th>
</tr>
<tr ng-repeat="category in categories">
<td>{{ category.name }}</td>
<td>
<button class="btn btn-warning" ng-click="editCategory(category)">Edit</button>
<button class="btn btn-danger" ng-click="deleteCategory(category.id)">Delete</button>
</td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script>
</body>
</html>
$scope.categories
и что такоеdata
в ответе?$scope.categories.push(category);