模型的默认值在 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();
}
}
注意:尚未对此进行测试,但应该可以。
我注意到如果我在 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();
}
}
注意:尚未对此进行测试,但应该可以。