Как вызвать функцию из шаблона ячейки в ui-grid в 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;
}
});
2 ответа
Я публикую ответ на свой вопрос.
У меня ниже работает настройка в cellTemplate:
_starRatingTemplate = [
'<div class="opr-star-rating" >',
'<opr-star-rating rating-percentage="+vm.getRating()+">',
'</opr-star-rating>',
'</div>'
].join('');
Мы можем получить доступ к родительской области видимости внутри шаблона ячейки сетки, используя объект grid.appScope.
Если вы создали функцию getRating как $scope.getRating(){..} в родительском контроллере, вы можете получить к ней доступ следующим образом
rating-percentage="grid.appScope.getRating()"
Если вы создали функцию getRating внутри объекта vm контроллера и использовали контроллер следующим образом
<div ng-controller="SelectToolController as SelectToolCtl">
....
</div>
тогда просто используйте рейтинг-процент ="grid.appScope.SelectToolCtl.getRating()"