如何为数组中的每个记录设置一个属性的值

时间:2017-09-19 14:04:22

标签: arrays extjs extjs4.1 extjs5 sencha-architect

我有一个包含1个或更多记录的数组。对于ex的每条记录:有一个属性ID。我想将此名称设置为默认值:8。请帮助我。 数组:[{id:2,名称:" x"},{id:4,名称:" y"}] 我试过这种方式

if (!Ext.isEmpty(detailLineItems) && (detailLineItems.length > 0)) {
canProcess = false;
Ext.Array.forEach(array, function (r) {
    if (r.id == 0 || Ext.isEmpty(r.id)) {
        canProcess = true;
       //how do I set this id
        r.id == 6;

    }
});

2 个答案:

答案 0 :(得分:2)

您不应该更改记录的内部ID,因为这可能会破坏所有内容;框架期望record.id中的值与record.get(record.idProperty)的值相同。相反,您应该始终使用setter方法:record.set("id", 8)

但您实际上搜索的是模型字段中的defaultValue configuration

fields:[{
    name: 'id',
    type: 'int',
    defaultValue: 8
}]

请注意,只要模型的idProperty默认为id,字段id就会在ExtJS中获得特殊处理。商店只能在idProperty定义的字段中包含一个具有相同非空值的记录,因此如果将它们全部添加到同一个商店,则最终只会有一个记录,而所有其他记录都是删除。因此,如果您需要在商店中使用相同id的多条记录,则必须将模型上的idProperty更改为其他内容,例如

idProperty: 'someNonExistentProperty'

这可能会导致存储sync操作出现问题。如果您只尝试将id设置为固定值,因为您的后端需要整数id,并且ExtJS为新记录生成的默认ID是非数字的(例如ext-myModel-1),你可以查看identifier: 'negative'

答案 1 :(得分:0)

亚历山大已经回答了你的问题但是,你的代码声明 r.id == 6; 使用等于运算符而不是赋值运算符 r.id = 6 ; : - )