AngularJs - как перезагрузить страницу после добавления новых данных в datatable

Я очень новичок в angularjs и использую angularjs bootstrap datatable. Теперь, когда я добавляю новую запись в мой datatable, она обновляется в базе данных mysql, но мне нужно перезагрузить мою страницу, чтобы новая запись также отображалась в таблице, но я не знаю, как это сделать. Кто-нибудь может мне помочь, пожалуйста! Можно ли инициализировать tableRoleCtrl при успехе addRoleData () в ui-bootstrp.js?

Вот мой код

UI-bootstrap.js

.controller('ModalInstanceCtrl', function ($scope, $modalInstance, content, tableService) {

        //add new role
        $scope.addRole = function(w) {
            tableService.addRoleData(w)
        }
})

table.js

.controller('tableRoleCtrl', function($filter, $sce, ngTableParams, tableService) {
        //var data = tableService.data;

        var self = this; 
        var promise = tableService.getRoleData();
        self.data = [];

        promise.then(
            function(payload) { 

                self.data = payload.data;
                //alert(JSON.stringify(self.data));
                //console.log("test" + self.data)

                self.tableEdit = new ngTableParams({
                    page: 1,            // show first page
                    count: 10           // count per page
                }, {
                    total: self.data.length, // length of data
                    getData: function($defer, params) {
                        $defer.resolve(self.data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                    }
                });

            },
            function(errorPayload) {
              $log.error('failure loading movie', errorPayload);
            }); 

        //to updaate data   
        self.updateRole = function(w) {
            tableService.updateRoleData(w); 
        }

    })

service.js

.factory('tableService', ['$http', function($http){
        var _this = this;
        return { 

            // role
            getRoleData: function() {
                return $http.get("data/getRoles.php");
            },
            updateRoleData: function(w) {
                $http.post("data/updateRole.php", w)
            },
            addRoleData: function(w) {
                $http.post("data/addRole.php", w)
            }
        }
    }])

HTML

<div data-ng-controller="ModalDemoCtrl">
    <script type="text/ng-template" id="addrole.html">
        <div class="modal-header">
            <h4 class="modal-title">Add Role</h4>
        </div>
        <div class="modal-body m-l-15">
            <form role="form">
                <div class="row">
                    <div class="col-md-8">
                        <div class="input-group">
                            <span class="input-group-addon"><i class="zmdi zmdi-account"></i></span>
                            <div class="fg-line">
                                <input type="text" name="role_title" ng-model="add_role.role_title" class="form-control" placeholder="Title">
                            </div>
                        </div>
                        <br/>
                        <div class="">
                            <div class="input-group"><span class="input-group-addon"><i class="zmdi zmdi-account-circle"></i></span>
                                <select chosen multiple>
                                    <option>Use seetings from</option>
                                    <option>HR</option>
                                    <option>Employee</option>
                                    <option>Admin</option>
                                </select>
                            </div>
                        </div>
                    </div><br/>
                </div>
            </form>
        </div>
        <div class="modal-footer">
            <button class="btn btn-link" ng-click="ok(); addRole(add_role)">Submit</button>
            <button class="btn btn-link" ng-click="cancel()">Cancel</button>
        </div>

    </script>
    <button class="btn btn-default" ng-click="openStatic('addrole')">Add Roles</button>
</div>
<div class="table-responsive">
    <table ng-table="tctrl.tableEdit" class="table table-striped" show-filter="true">
        <tr ng-repeat="w in $data" ng-class="{ 'active': w.$edit }" ng-click="ShowHide12()" style="cursor:pointer">
            <a href="" ng-click="getSingleRole()">
                <td><span ng-if="!w.$edit">{{ w.rl_title }}</span>

                    <div ng-if="w.$edit"><input class="form-control" type="text" ng-model="w.rl_title" /></div>
                </td>
            </a>
            <td>
                <button type="button" class="btn btn-default" ng-if="!w.$edit" ng-click="w.$edit = true; "><i class="zmdi zmdi-edit"></i></button>&nbsp;
                <button type="button" class="btn btn-default" ng-if="!w.$edit" ng-click="w.$edit = false"><i class="zmdi zmdi-close"></i></button>
                <button type="button" class="btn btn-success" ng-if="w.$edit" ng-click="w.$edit = false; tctrl.updateRole(w)"><i class="zmdi zmdi-check"></i></button>
                <button type="button" class="btn btn-default" ng-if="w.$edit" data-ng-click="w.$edit = 0" ><i class="zmdi zmdi-close"></i></button>
            </td>
        </tr>
     </table>
</div>

javascript,mysql,angularjs,angular-ui-bootstrap,

2

Ответов: 2


0

На самом деле вам не нужно перезагружать страницу при обновлении данных, AngularJS - это структура MVC, и каждая модель AngularJS создаст наблюдателя для обновления вида .

В принципе, вам просто нужно сохранить данные таблицы в переменной области $scope.tableDataв вашем контроллере, а затем использовать ng-repeat="row in tableData"для повторения ваших данных таблицы. ng-repeatбудет следить за вашими tableDataизменениями, а затем обновлять таблицу.


0

Если вы изменили данные ngTable динамически, вы можете обновить его с помощью:

self.tableEdit.reload();
JavaScript, MySQL, angularjs, угловая-щ-самозагрузка,
Похожие вопросы