En explorant la grille angulaire de http://angulargrid.com je suis resté avec une fonctionnalité sans importance comme avoir des boutons d'action à l'intérieur d'une cellule et le traitement du clic en utilisant un templateUrl et non un modèle HTML inline.Est-ce qu'un cellRenderer à grille angulaire peut utiliser templateUrl et lui transmettre des paramètres?
Le cas d'utilisation est trivial: Il y a une grille avec quelques données. Je veux que chaque rangée contienne une cellule avec les actions disponibles (Editer, Supprimer etc).
HTML:
<div ng-if="surveysGirdOptions" ag-grid="surveysGirdOptions" class="ag-fresh" style="height :400px">
</div>
contrôleur AngularJS:
var columnDefs = [
{headerName: "Caption", field: "caption", editable: true},
{headerName: "Questions", field: "questions"},
//{headerName: "Actions", templateUrl: "views/surveys/surveyActions.html"}
{headerName: "Actions", cellRenderer: ageCellRendererFunc}
];
function ageCellRendererFunc(params) {
return '<span><a class="btn btn-sm btn-primary" ng-click="delete($index)"><span class="glyphicon glyphicon-pencil"></span></a></span><span><a class="btn btn-sm btn-primary" ng-click="delete(' + params.rowIndex + ')"><span class="glyphicon glyphicon-trash"></span></a></span>';
}
fonction ageCellRendererFunc
se comporte comme prévu, mais il y a beaucoup de code de modèle dans le contrôleur pour factoriser et de le mettre dans un fichier html.
Mais je n'ai aucune idée comment accéder à params.rowIndex
(index de ligne de cette cellule) dans le fichier modèle. Les données de la ligne sont accessibles via la variable de données mais j'ai besoin de l'index de ligne.
Une idée si c'est faisable du tout? Et si possible alors comment?
Il existe des solutions de contournement pour obtenir le même résultat. Mais itérer sur un grand tableau pour savoir quelle ligne doit être éditée, par exemple, sur la base d'un identifiant de données est inefficace par rapport à un accès direct à l'élément row par son index.
C'est la même référence, je regardais aussi). Le problème que j'ai avec votre suggestion commence par où placer ma directive. En regardant les exemples et le code, le seul endroit où l'attacher serait la grille elle-même. Cela pourrait effectivement fonctionner. Je vais explorer demain votre avance. – ioikka