web-dev-qa-db-ja.com

AngularJS:UIグリッドセルテンプレートからスコープにアクセスする方法は?

どのようにアクセスしますか$scope UIグリッドセルテンプレートから?コントローラコードは次のとおりです。

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>'
    }]
  };
}]);

こちらで実際にご覧ください: http://plnkr.co/edit/WYXeQShHWKDYDs4MIZnP?p=preview

セルの内容には「hello world」と表示されるはずですが、「hello」と表示されるだけです。

41
tenfour

http://ui-grid.info/docs/#/tutorial/305_appScope によると、グリッドには独自のisalotedスコープがあるため、grid.appScopeを使用してアプリケーションスコープにアクセスする必要があります。 。解決策は、セルテンプレートを次のように変更することです。

  cellTemplate: '<div>{{ "hello " + grid.appScope.world() }}</div>'
69
tenfour