如何从AngularJS的UI网格中的单元格模板调用函数?

时间:2018-11-16 08:31:59

标签: angularjs angular-ui-grid ui-grid

我在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;
          }

      });

2 个答案:

答案 0 :(得分:1)

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

如果在父控制器中将getRating函数创建为$ scope.getRating(){..},则可以按以下方式访问它

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

如果您在控制器的vm对象中创建了getRating函数,并按照以下说明使用了控制器

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

然后简单使用      rating-percentage =“ grid.appScope.SelectToolCtl.getRating()”

答案 1 :(得分:0)

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

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

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