【问题标题】:how can i create an modal dialog in a datatable如何在数据表中创建模式对话框
【发布时间】:2016-02-19 12:15:24
【问题描述】:

我有一个 angularJS app.controler,里面有一个数据表。最后一列是删除按钮。如果我按下这个按钮,应该会出现一个带有问题的模式对话框“你真的要删除这个用户吗?” 那工作正常。 但是如何在模式对话框中显示用户名? 以及如何将用户 ID 发送到后端控制器? 如果我写这个 return '<a class="btn btn-danger btn-sm btn-block" href=/deleteUser?userid=' + data + '>' + ($filter('translate')('delete')) + '</a>'; 该用户将被立即删除。 这是我的桌子: usertable

模态对话框: the modal dialog in action (without the username)

这是html中的sn-p

 <div id="myModal" class="modal">
   <div class="modal-content">
     <div class="modal-header">
       <h2>DELETE USER</h2>
     </div>
     <div class="modal-body">
   <p>Do you realy want to delete the user? </p>
   <p>username: ??? </p>
 </div>
 <div class="modal-footer">
   <button type="button" class="btn btn-default" data-dismiss="modal">CANCEL</button>
   <button type="button" class="btn btn-danger">DELETE</button>
 </div>
 </div>
 </div>

这是 app.controller

app.controller('UsersController',['$translate', '$scope','$filter', '$http', function($translate,$scope, $filter, $http) {

                $scope.users = [];
                $http.get('/user').then(function(resp) {
                    $scope.users = resp.data;
                });

                $scope.tableConfig = {
                    columns : [
                            {
                                data : 'username'
                            },
                            {
                                data : 'lastname'
                            },
                            {
                                data : 'firstname'
                            },
                            {
                                data : 'supplier',
                                render : function(data, type, row, meta) {
                                    if (!data || !data.name) {
                                        return '';
                                    }
                                    return data.name;
                                }
                            },
                            {
                                data : 'role'
                            },
                            {
                                //the edit button
                                data : 'id',
                                render : function(data, type, row, meta) {
                                    if (!data || !data) {
                                        return '';
                                }
                                    return '<a class="btn btn-warning btn-sm btn-block" href=/editUser?userid=' + data + '>' + ($filter('translate')('edit')) + '</a>';
                                }

                            },
                            {
                                //the delete button
                                data : 'id',
                                render : function(data, type, row, meta) {
                                    if (!data || !data) {
                                        return '';
                                }
                                    return '<button type="button"  class="btn btn-danger btn-sm btn-block" id="myDELBtn"  data-toggle="modal" data-target="#myModal" >DEL</button>'

                                }
                            },

                    ]
                }


            }]);

【问题讨论】:

标签: javascript jquery html angularjs datatable


【解决方案1】:

通常,在控制器中的操作中,您传递实体的 ID;一个很好的例子是您可以将 HREF 设置为 /users/delete/5,它为用户 #5 调用控制器操作删除。这样您就可以将 ID 传递给控制器​​并使用 AJAX 调用从中检索用户名。

【讨论】:

  • 你的意思是这样的: return ''。但是如何从我的 html 中的数据中获取 id?
【解决方案2】:
/**
         * @Function to delete a user.
         */                    
        $scope.deleteConfirmation = function(size) {

                 var modalInstance = $modal.open({
                        templateUrl : 'views/userManagement/gxDeleteMessagePopup.html',
                        controller : ModalInstanceCtrlForDelete,
                        size : size,
                        resolve : {
                            dataSelect : function() {
                                return $scope;
                            }
                        }
                    });
                 modalInstance.result.then(function(selectedItem) {
                    },function() {
                }); 
        };


        //Added controller for delete message modal pop up 
        var ModalInstanceCtrlForDelete = function($scope, $modalInstance,dataSelect) {
            $scope.dataSelect = dataSelect;
                $scope.ok = function() {    

                      Service.deleteUser(dataSelect.gridOptions.user);
                     $modalInstance.close();    
                     $state.go('home.Manage Users');
                };

                $scope.cancel = function() {
                    $modalInstance.dismiss('cancel');

                };
                };

【讨论】:

  • 您可以使用 {{ user.id }} 从 html 中获取数据。或者,如果您使用的是网格组件,则可以从行单击处理程序存储用户行。请告诉我这是否解决了。
  • 如果我写: user.id 中没有任何内容。我必须在 scope.userID = ... 中添加一些内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
相关资源
最近更新 更多