我在angularJs(1.6)中有一个使用ui-grid的控制器。 问题是只有一个单元格模板。我想在此模板中获得不同的评分百分比值。我创建了一个函数“ getRating()”并调用了它。但是它只被调用一次。因此,所有模板的值都相同。
有人可以帮我吗?
这是我的控制器代码:
(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('');
vm.rating = 10;
//this func is called from _starRatingTemplate
vm.getRating = function(){
return vm.rating++;
}
});
如您所见,每次调用getRating函数时,我都会增加该值。但是此功能仅被调用一次。因此,我最终为网格中的所有单元获得了11的价值。
答案 0 :(得分:0)
模板字符串被“计算”一次,并在每个单元格中使用,因此在构建模板字符串时,仅对getRating()
进行一次调用。
要每次都调用该函数,应使用'mustache'{{}}
并引用您的控制器。
因此您的代码应与此类似:
_starRatingTemplate = [
'<div class="opr-star-rating" >',
'<opr-star-rating rating-percentage="{{$ctrl.getRating()}}">',
'</opr-star-rating>',
'</div>'
].join('');