首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular-ui-grid --如何根据单元格的值有条件地显示单元格模板

Angular-ui-grid --如何根据单元格的值有条件地显示单元格模板
EN

Stack Overflow用户
提问于 2016-08-09 13:18:05
回答 1查看 2.2K关注 0票数 2

当单元格的值不同时,我尝试显示不同的模板。

1)如何在这里访问单元格的值(valueOfType)?

2)是否可以访问另一列的值(valueOfNumber)?

代码语言:javascript
复制
columnDefs: [
             { name:'type',
               cellTemplate: '<a ng-class="{style1: valueOfType = '1'}" ng-click=fn(valueOfNumber)></a>'
             },
             { name: 'number'}
          ],

3)是否可以根据单元格的值有条件地显示模板?我怎样才能在这里找到cellValue

代码语言:javascript
复制
columnDefs: [
             { name:'type',
               cellTemplate: getTemplate()
             },
            ],

var getTemplate = function() {
   if(cellValue == 'something') {
       return template.html
   } else {
       return anotherTemplate.html
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-20 08:53:23

您应该能够使用模板中的scope变量访问列值

代码语言:javascript
复制
ng-class=\"{style1:row.entity[col.field]=='1'}\"

下面是完整的工作示例,

代码语言:javascript
复制
var app = angular.module('app', ['ngTouch', 'ui.grid','ui.grid.edit']);
var grid;
app.controller('MainCtrl', ['$scope', function ($scope) {

  var myData = [
    {
      id1:"1",id2:"2",id3:"3",id4:"4",id5:"5",
    }, {
      id1:"0",id2:"2",id3:"3",id4:"4",id5:"5",
    },]

    var getTemplate = function()
    {

        return "<div ng-class=\"{style1:row.entity[col.field]=='1'}\" class=\"ui-grid-cell-contents\">{{COL_FIELD CUSTOM_FILTERS}}</div>";

    }

  var cellEditable = function($scope){
    if($scope.row.entity.oldId4===undefined)
      return false;
    return $scope.row.entity.oldId4!=$scope.row.entity.id4;
  }

  $scope.gridOptions = {
        enableFiltering: true,
         onRegisterApi: function(gridApi){
      grid = gridApi;
    },
    data: myData,
    columnDefs:[
        {
          field: 'id1',
          displayName: "id1",
          width: 100,

         enableCellEdit:true,
          cellEditableCondition : cellEditable,
           cellTemplate: getTemplate()
        },
        {
          field: 'id2',
          displayName: "id2",
          width: 100,

         enableCellEdit:true,
          cellEditableCondition : cellEditable
        },{
          field: 'id3',
          displayName: "id3",
          width: 100,
          enableCellEdit:true,
          cellEditableCondition : cellEditable
        },{
          field: 'id4',
          displayName: "id4",
          width: 100,
         enableCellEdit:true,
        },{
          field: 'id5',
          displayName: "id5",
          width: 100,
         enableCellEdit:true,
          cellEditableCondition : cellEditable
        },

    ],
}
 $scope.gridOptions.onRegisterApi = function(gridApi){
          //set gridApi on scope
          $scope.gridApi = gridApi;
          gridApi.edit.on.afterCellEdit($scope,function(rowEntity, colDef, newValue, oldValue){
            rowEntity.oldId4 = oldValue;
            $scope.$apply();
          });
        };

 $scope.test = function()
 {
   window.alert("Cell clicked")
 }
}]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38842609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档