AngularJS ui-grid和自定义指令更新

时间:2015-12-16 13:05:46

标签: angularjs pagination angular-ui-grid

我正在使用ui-grid创建可排序的表以及分页。当我进行分页时,在后台进行服务调用,返回一组新数据,然后在表中更新。 我已经为cell模板编写了一个指令,该指令检查数据对象的keyName" context"并且基于" context"的值它为细胞模板设置特定图像。 问题是该指令适用于第一组记录,但是当我使用paginate获取下一组记录时,该表显示新记录,但该指令不更新单元模板的图像。 我通过在指令中添加一个手表找到了解决方案,现在它按预期工作。 我的问题是还有其他方法可以解决上述问题吗?

我的列定义,单元格模板有我的自定义指令" account-type-icon"

    {
      name:'Name',
      field: 'entityName' ,
      sort : gridDecorator.getInitialSortState(vm.metadata.sorters, 'entityName'),
      sortDirectionCycle :   ['asc', 'desc'],
      headerCellClass : 'headercell',
      cellClass : 'gridcell',
      minWidth : 300,
      enableSorting : gridDecorator.isTheColumnSortable('entityName'),
      cellTemplate : '<td><a ui-sref=""><**account-type-icon** context="row.entity.contextType"></account-type-icon> {{row.entity.entityName}}</a></td>'
    },

&#34;帐户类型图标&#34;是我的指示,

return {
  restrict: 'EA',
  replace: true,
  template: '<i></i>',
  scope: {
    context: '='
  },
  link: function (scope, iElement) {
    //console.log(scope);
    var context = scope.context;
    if (context !== undefined && typeof context === 'number') {
      var iconClass = mapContext(context);
      if (iconClass) { iElement.addClass(iconClass); }
    }

    function mapContext (context) {
      switch(context) {
        case 1:
          // accounts
          return 'glyphicons glyphicons-book';
        case 2:
          // clients
          return 'glyphicons glyphicons-user';
        case 3:
          // groups
          return 'glyphicons glyphicons-address-book';
        case 4:
          // households
          return 'glyphicons glyphicons-home';
        default:
          return false;
      }
    }
   //this watch solves my problem of icon updation
    scope.$watch('context',function(newContextValue){
      if (newContextValue !== undefined && typeof newContextValue === 'number') {
        var iconClass = mapContext(newContextValue);
        if (iconClass) {
          iElement.removeClass('glyphicons-book glyphicons-user glyphicons-address-book glyphicons-home');
          iElement.addClass(iconClass);
        }
      }
    });
  },
  controller: ['$scope',function ($scope){
      //console.log($scope);
  }]
};

还有其他优雅的方法让指令知道它需要更新单元格的图像吗?

0 个答案:

没有答案