À l'aide d'une fonction dans la cellule modèle

Je suis en utilisant angularjs avec de l'interface utilisateur-réseau. Une colonne de la grille contient un horodatage qui je tiens à rendre un correctement formaté date.

Jusqu'à maintenant, j'ai essayé comme ça, mais la fonction n'est jamais appelée.

  $scope.formatDate = function(date) {
    return '42';
  };

  $scope.columns = [
    {field: 'date', cellTemplate: '<div class="ui-grid-cell-contents">formatDate({{row.entity.date}})</div>'},
    {field: 'title'},
    {field: 'quantity'},
    //[...]
  ];

Au lieu de cela, l'appel de fonction est considérée comme une chaîne littérale. En conséquence, la colonne affiche toujours formatDate(*timestamp*).

J'ai seulement trouvé un non-satisfaction de façon de l'atteindre par la définition d'une fonction sur chaque ligne unique lors de leur réception :

  $scope.columns = [
    {field: 'getFormattedDate()'},
    //[...]
  ];

  $http.post('/api/data/').success(function (data) {
    $scope.gridOptions.data = data.elements;

    $scope.gridOptions.data.forEach(function(row) {
      row.getFormattedDate = function() {
        return '42';
      }
    })
  });

Meilleure suggestion?

Avez-vous essayé le filtre de date?
n'utilisez pas de {{}} sur le champ d'application de la fonction de variables
Oui, la date de filtre fonctionne très bien. Désolé, mais la question est fait pour être plus général que "comment analyser une date". Je voudrais être en mesure d'appeler une méthode pour les autres colonnes qui contient autre chose que des dates.
J'ai essayé, mais l'expression entière est considérée comme une Chaîne. Ensuite, la grille affiche formatDate(row.entity.date) dans toutes les cellules 😀
ce que vous êtes à la recherche pour?

OriginalL'auteur Arnaud Denoyelle | 2015-10-12