如何从 ui-grid in angularjs 中的单元格模板调用函数?

How to call a function from cell template in ui-grid in angularjs?

我在 angularJs(1.6) 中有一个控制器正在使用 ui-grid。 问题是只有一个单元格模板。我想从函数中获取它的值。我尝试创建一个函数并尝试使用 grid.appScope.function 调用它。但它没有用。 我也尝试将我的功能与 vm 一起使用。但是没有用。

谁能帮我解决这个问题?

这是我的控制器代码:

 (function () {
    'use strict';

     define([
         'angular'
     ], function (angular) {

     function SelectToolController($scope, $timeout, $filter, uiGridConstants) {
                  var vm = this,
                      _gridApi,
                      _cellTemplate,
                      _columnDefs,
                      _starRatingTemplate,
                      _starRatingColumn,
                      _starEnable;
            };
            _starRatingTemplate = [
                  '<div class="opr-star-rating"  >',
                  '<opr-star-rating rating-percentage="getRating()">',
                  '</opr-star-rating>',
                  '</div>'
            ].join('');

      //this func need to be called from _starRatingTemplate 
       vm.getRating = function(){
           return 10;
        }

        function gridInitialized(gridApi) {
            _gridApi = gridApi;
          }

      });

我们可以使用 "grid.appScope" 对象访问网格单元模板内的父范围。

如果您在父控制器中创建了 getRating 函数作为 $scope.getRating(){..} 那么您可以按如下方式访问它

rating-percentage="grid.appScope.getRating()"

如果您在控制器的 vm 对象中创建了 getRating 函数并按如下方式使用控制器

 <div ng-controller="SelectToolController as SelectToolCtl">
....
 </div>

然后简单使用 评分百分比="grid.appScope.SelectToolCtl.getRating()"

我正在发布我自己查询的答案。

cellTemplate 中的以下设置对我有用:

  _starRatingTemplate = [
                  '<div class="opr-star-rating"  >',
                  '<opr-star-rating rating-percentage="+vm.getRating()+">',
                  '</opr-star-rating>',
                  '</div>'
   ].join('');