Angular UI Grid不更新单元格中的指令

时间:2016-02-16 09:41:46

标签: angular-ui-grid

我有一个包含指令的ui网格,该指令有一个独立的范围,并根据某些逻辑更改了它的模板。

问题是,在排序时(以及PAGING时),指令的“逻辑”似乎没有被正确地“重新评估”。

在具体示例中,最右边的列应该只看到一些“11”,而如果你尝试按id(或其他字段)排序,你会看到一些spurios'0'出现。

这是ui:

<div ng-app="myapp">
  <div ng-controller="myctrl">
    <div ui-grid="gridOptions" ng-style="gridStyle"></div>
  </div>
</div>

这是js:

var myapp = angular.module('myapp', ["ngRoute", "ui.grid"])

.controller('myctrl', function($scope) {

  $scope.gridOptions = {
    data: [{
      id: 1,
      name: "Max",
      other: "pippo",
      number: 1
    }, {
      id: 2,
      name: "Adam",
      other: "pluto",
      number: 0
    }, {
      id: 3,
      name: "Betty",
      other: "paperino",
      number: 0
    }, {
      id: 4,
      name: "Sara",
      other: "fava",
      number: 1
    }, {
      id: 5,
      name: "Favonio",
      other: "favona",
      number: 1
    }],
    columnDefs: [{
      field: "id",
      displayName: "ID"
    }, {
      field: "name",
      displayName: "Name"
    }, {
      field: "other",
      displayName: "Other"
    }, {
      field: "number",
      cellTemplate: '<div class="ui-grid-cell-contents"><mydir data="row.entity"></mydir></div>'
    }]
  };

}).directive("mydir", function() {
  return {
    restrict: 'E',
    scope: {
      data: "=",
    },
    template: '<div><label ng-if="data.number==1">{{set}}</label></div>',
    link: function(scope, iElement, iAttrs) {

      scope.set = -1;

      if (scope.data.number == 0) {
        scope.set = 00;
      } else {
        scope.set = 11;
      }

    }
  }
});

这是一个小提琴:

https://jsfiddle.net/27yrut4n/

任何提示?

1 个答案:

答案 0 :(得分:0)

最后这是一个已知的错误:

https://github.com/angular-ui/ui-grid/issues/4869

我解决了使用手表,就像在这里说的那样:

Directive rendered via UI-Grid cellTemplate rendering incorrectly