таблица angularjs не обновляется при добавлении элементов

0

Я делаю почтовый запрос для отдыха 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 = []; на передней панели контроллера.

  • 1
    Как вы $scope.categories и что такое data в ответе?
  • 0
    нажмите на это как $scope.categories.push(category);
Теги:

2 ответа

0
Лучший ответ

Отвечая на вопрос, чтобы закрыть вопрос. Я забыл объявление категорий на передней панели контроллера, что привело к тому, что таблица не обновлялась. Я переместил его внутри функции init, и это решило его.

$scope.categories=[];
1

      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>
  • 0
    Это все еще не работает.
  • 0
    Но как коды работают здесь правильно !!?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню