简体   繁体   English

AngularJs-将新数据添加到数据表后如何重新加载页面

[英]AngularJs - how to reload page after adding new data to datatable

I am very new to angularjs and using angularjs bootstrap datatable. 我对angularjs和使用angularjs引导程序数据表非常陌生。 Now when I add new record to my datatable it is being updated in mysql database but I need to reload my page so new record can be displayed in table also but I don't know how to do it. 现在,当我向数据表中添加新记录时,它正在mysql数据库中进行更新,但是我需要重新加载页面,以便新记录也可以显示在表中,但我不知道该怎么做。 Can anyone please help me? 谁能帮帮我吗? Can I init tableRoleCtrl on success of addRoleData() in ui-bootstrp.js? 我可以在ui-bootstrp.js中成功执行addRoleData()时初始化tableRoleCtrl吗?

Here is my code 这是我的代码

ui-bootstrap.js UI的bootstrap.js

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

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

table.js 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 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 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>

You don't actually need to reload page when data is updated, AngularJS is MVC framework and each model AngularJS will create a watcher to update view . 您实际上并不需要在更新数据时重新加载页面,AngularJS是MVC框架,每个模型 AngularJS都会创建一个观察者来更新view

Basically, you just need to store your table data to a scope variable $scope.tableData in your controller then use ng-repeat="row in tableData" to iterate your table data. 基本上,您只需要将表数据存储到控制器中的作用域变量$scope.tableData中,然后使用ng-repeat="row in tableData"即可$scope.tableData数据。 ng-repeat will watch your tableData changes then update your table. ng-repeat将监视您的tableData更改,然后更新您的表。

如果您动态更改了ngTable数据,则可以使用以下方法刷新它:

self.tableEdit.reload();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM