1

我对 Angular 和 Smart-Table ( http://ngmodules.org/modules/Smart-Table ) 很陌生,我正在尝试为表格行添加删除功能。有一个内置函数 (removeDataRow),但与附近的表亲 updateDataRow 不同,我无法弄清楚如何触发它。到目前为止,这是相关的代码:

删除操作.html:

<button custom ng-click="doAction()"
    class="btn btn-xs btn-primary">
        Delete
</button>

表列定义:

$scope.columnCollectionDispo = [
        {label: 'ID', map: 'dispositionId', isEditable: false},
        {label: 'Name', map: 'name', isEditable: true},
        {label: 'Code', map: 'code', isEditable: true},
        {label: 'Description', map: 'description', isEditable: true},
        {label: 'Sort Index', map: 'sortIndex', isEditable: true, type: 'number'},
        {label: 'Status', map: 'status'},
        {label:'actions', cellTemplateUrl:'../views/admin/deleteAction.html'}

    ];

表全局配置:

        $scope.globalConfig = {
        isPaginationEnabled: true,
        itemsByPage: 5,
        maxSize: 10,
        selectionMode: 'single',
        doAction: function(){
            $scope.$emit('deleteAction');
        }
    };

删除方法:

 $scope.$on('deleteAction',function(){
        alert("Delete List"); //just to see if I am reaching this code

    });

表格展示:

<smart-table class="table table-striped" table-title="DispoElements"
             config="globalConfig" rows=dispoElements columns="columnCollectionDispo">
</smart-table>

我可以显示 Delete 按钮并花费一些周期时间来尝试触发 removeDataRow 方法。如果做不到这一点,我一直在试图弄清楚如何将表元素 id 传回以执行删除。我宁愿使用内置函数。有任何想法吗?TIA,泰德

4

2 回答 2

2

由于使用的智能表指令将其范围与父控制器隔离,因此您不能直接访问在父控制器中定义的函数。

要访问相同,您可以使用$parent属性

试试这个deleteAction.html

<button ng-click="$parent.$parent.$parent.$parent.doDelete(dataRow)"
    class="btn btn-xs btn-primary">
        Delete
</button>

表列定义,

$scope.columnCollectionDispo = [
        {label: 'ID', map: 'dispositionId', isEditable: false},
        {label: 'Name', map: 'name', isEditable: true},
        {label: 'Code', map: 'code', isEditable: true},
        {label: 'Description', map: 'description', isEditable: true},
        {label: 'Sort Index', map: 'sortIndex', isEditable: true, type: 'number'},
        {label: 'Status', map: 'status'},
        {label:'actions', cellTemplateUrl:'../views/admin/deleteAction.html'}

    ];

在您的父控制器中,

$scope.doDelete=funcion(dataRow){

alert('inside doDelete');

//implement the code for delete action

}

这是 plunker 工作演示,

http://plnkr.co/edit/87yfJQEbBjzOlJoCZ3aq?p=preview

于 2014-07-16T05:41:23.223 回答
1

我想答案是你不能。我从 smart-table 切换到 trNgGrid,它似乎工作得更好。显示、编辑和删除工作正常。工作添加。到目前为止,添加工作,但我希望网格转到新添加的记录并将其置于编辑模式,但目前还没有好处。仍在进行中。

于 2014-07-01T21:00:12.317 回答