模型的默认值在 ExtJS 中只被评估一次。有没有办法在记录插入时对其进行评估?

Model's defaultValue is evaluated only once in ExtJS. Is there a way to evaluate it at record insertion?

我注意到如果我在 ExtJS 中为模型设置 defaultValue,它只会被评估一次。问题是我会有这样的东西

Ext.define("AnalysisModel",{
    extend: "Ext.data.Model",
    fields: [
        {
            name: "date", 
            type: "date", 
            defaultValue: new Date(),
        }
    ],
});

每次我在使用此模型的商店中插入记录时,我都希望 date 是插入日期。相反,new Date() 只计算一次,所有记录都对 date 具有相同的值。所以我还必须明确插入 date.

有什么办法可以避免这种情况吗?我正在使用 ExtJS 5.1

defaultValue: new Date()定义模型时正在评估;它是 Ext.define() 调用的参数的一部分。这就是为什么它只被评估一次。

您需要做的是稍后评估 defaultValue - 例如评估模型时。对于模型,最简单的方法是使用 convert 方法。

{ name: "date", type: "date",
  convert: function(value, record) {
    if (value) { return value; }
    return new Date();
  }
}

注意:尚未对此进行测试,但应该可以。