制表符中的 Mutator 无法处理相同的编辑功能

Joh*_*ohn 6 javascript jquery mutators tabulator

我有一个场景,我在下面定义了修改器,当我编辑单元格时,它在使用通用修改器的地方不起作用?我想这是一个错误还是有其他方法可以做到这一点?

 var diffMutator_FEcontacted = function (value, data, type, params, component) {
    var start = moment(data.incident_start, 'DD/MM/YYYY HH:mm')                   
    var end = moment(data.First_expert_contacted_by_SE, 'DD/MM/YYYY HH:mm')       //common feild
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("time_to_contact_first_exp_calc").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }

  var diffMutator_REcontacted = function (value, data, type, params, component) {
    var start = moment(data.incident_start, 'DD/MM/YYYY HH:mm')
    var end = moment(data.Right_expert_found_at, 'DD/MM/YYYY HH:mm') //common feild
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("Time_to_find_right_exp_calc").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }

  var diffMutator_FEREdiff = function (value, data, type, params, component) {
    var start = moment(data.First_expert_contacted_by_SE, 'DD/MM/YYYY HH:mm')    //common feild in another fucntion
    var end = moment(data.Right_expert_found_at, 'DD/MM/YYYY HH:mm') //common feild in another function
    var new_value = end.diff(start, 'minutes');
    if (type == "edit") {
      console.log('edit');
      component.getRow().getCell("time_diff_FE_RE").setValue(new_value);
      return value;
    } else {
      return new_value
    }
  }
Run Code Online (Sandbox Code Playgroud)

相反,我会解释这一点,因为 mutator 不在公共领域工作。这是上面使用案例解释的小提琴

Oli*_*erd 1

发生这种情况是因为仅当更新其字段时才调用增变器函数,每个单独的函数不知道它是否依赖于表中的任何其他字段。

我建议在cellEdited已编辑列的回调中包含一个row.update来触发依赖列的更新。

因此,例如“TimeDiff”列取决于“TimeStart”列,因此在 TimeStart 列的定义中应包含以下内容:

{title: "Start Time", field: "TimeStart", cellEdited:function(cell){
    cell.getRow().update({TimeDiff:true});
}},
Run Code Online (Sandbox Code Playgroud)

当编辑 TimeStart 时,这将触发依赖的 TimeDiff 变异器的变异