В Smart-Table (http://ngmodules.org/modules/Smart-Table), как вы получаете доступ к функции removeDataRow

Я довольно новичок в Angular и Smart-Table ( http://ngmodules.org/modules/Smart-Table) и пытаюсь добавить функцию удаления для строки таблицы. Существует встроенная функция (removeDataRow), но, в отличие от ближайшего кузена, updateDataRow, я не смог понять, как ее вызвать. Вот соответствующий код на данный момент:

deleteAction.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'}

    ];

Таблица Global Config:

        $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>

Я могу отобразить кнопку "Удалить" и потратить некоторое время на попытки вызвать метод removeDataRow. В противном случае я пытался выяснить, как передать идентификатор элемента таблицы обратно для выполнения удаления. Я бы лучше использовал встроенную функцию. Есть идеи? Тиа, Тед

2 ответа

Решение

Я думаю, что ответ - ты не можешь. Я переключился со смарт-таблицы на trNgGrid, и она, кажется, работает намного лучше. Иметь отображение, редактировать и удалять работает нормально. Работаю над Add. Пока что добавление работает, но я хочу, чтобы сетка перешла на вновь добавленную запись и переместила ее в режим редактирования, но пока ничего хорошего в этом нет. Все еще в стадии разработки.

Поскольку используемая директива smart table изолирует ее область действия от родительского контроллера, вы не можете напрямую получить доступ к своей функции, определенной в родительском контроллере.

Чтобы получить доступ к тому же, вы можете использовать $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

}

Вот демоверсия рабочего плунжера,

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

Другие вопросы по тегам