В 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
}
Вот демоверсия рабочего плунжера,