AngularJS: comment accéder à la portée du modèle de cellule ui-grid?

Comment accède-t-on à $scope à partir d'un modèle de cellule ui-grid? Voici mon code de contrôleur:

app.controller('MainCtrl', ['$scope', function ($scope) {

  // i want to reference this from a cell template.
  $scope.world = function() { return 'world'; };

  $scope.gridOptions = {
    data: [
      { id: "item1" },
      { id: "item2" }
    ],
    columnDefs: [
    {
      field: 'id',

      // world() is never called and is not displayed.
      cellTemplate: '<div>{{ "hello " + world() }}</div>'
    }]
  };
}]);

Voir en action ici: http://plnkr.co/edit/WYXeQShHWKDYDs4MIZnP?p=preview

Je m'attendrais à ce que le contenu des cellules affiche "hello world", mais ils montrent simplement"hello".

40
demandé sur John Slegers 2015-01-24 18:48:28

1 réponses

Selon http://ui-grid.info/docs/#/tutorial/305_appScope , la grille a sa propre portée isaloted, vous devez donc utiliser grid.appScope pour accéder à votre portée d'application. La solution consiste à changer le modèle de cellule en:

  cellTemplate: '<div>{{ "hello " + grid.appScope.world() }}</div>'
68
répondu tenfour 2016-09-25 11:58:22