Есть следующая разметка:
<div ng-controller="ClientsCtrl">
<table-panel data="data" action-delete="client_delete(id)">
...
<data-table rows="rows" action-delete="???">
...
<table>
<tbody>
<tr ng-repeat="row in rows">
<td>
<a ng-click="entity_delete(row.id)">Delete</a>
</td>
</tr>
</tbody>
</table>
...
</data-table>
...
</table-panel>
</div>
где, table-panel и data-table - директивы.
Т.е. есть страница с панелью, в панели таблица с данными, у строки есть кнопка удалить. Таблица и панель сделаны директивами, чтобы можно было использовать на разных страницах, для разных данных.
Что должно происходить по нажатию на кнопку удалить, описано в контроллере ClientsCtrl.
Код директив:
controls.directive('tablePanel', function () {
return {
restrict: 'E',
scope: {
actionDelete: '&'
}
}
});
controls.directive('dataTable', function(){
return {
restrict: 'E',
scope:{
actionDelete: '&'
},
controller: function($scope){
$scope.entity_delete = function (id) {
$scope.actionDelete({id: id});
};
}
};
});
Что нужно написать в разметке в строке
<data-table rows="rows" action-delete="???">
в атрибуте action-delete?
Если написать actionDelete(id), то получим ошибку при нажатии на кнопку:
Cannot use 'in' operator to search for 'client_delete' in 1
Если я правильно понимаю, то можно создать метод в контроллере директивы tablePanel и ставить ссылку уже на него.
Вопрос в том, можно ли обойтись без создания метода, который просто будет дергать другой метод?