extjs - 设置模型的新属性并且不将其标记为脏

标签 extjs extjs4

我有一家商店(带有代理“内存”)并且我有一系列模型,当我创建一个模型时我使用 set(field,newValue) 设置了他的属性但是这个方法将它标记为 derty,我想知道我可以设置字段的值而不将其标记为脏,这是我的示例:

 for(var i=0;i<questions.length;++i){
        var question=Ext.create('DCM.model.TCL');
        question.set('scope',questions[i].scope);
        question.set('topic',questions[i].topic);
        question.set('area',questions[i].area);
        question.set('target',questions[i].target);
        var responses=questions[i].responses;
        var sumJan=0,nbResponsesJan=0;
        var sumFeb=0,nbResponsesFeb=0;
        var sumMar=0,nbResponsesMar=0;
        var sumApr=0,nbResponsesApr=0;
        var sumMay=0,nbResponsesMay=0;
        var sumJun=0,nbResponsesJun=0;
        var sumJul=0,nbResponsesJul=0;
        var sumAout=0,nbResponsesAout=0;
        var sumSep=0,nbResponsesSep=0;
        var sumOct=0,nbResponsesOct=0;
        var sumNov=0,nbResponsesNov=0;
        var sumDec=0,nbResponsesDec=0;
        for(var j=0;j<responses.length;++j){
            switch(responses[j].month){
                case 0:sumJan+=responses[j].score;++nbResponsesJan;break;
                case 1:sumFeb+=responses[j].score;++nbResponsesFeb;break;
                case 2:sumMar+=responses[j].score;++nbResponsesMar;break;
                case 3:sumApr+=responses[j].score;++nbResponsesApr;break;
                case 4:sumMay+=responses[j].score;++nbResponsesMay;break;
                case 5:sumJun+=responses[j].score;++nbResponsesJun;break;    
                case 6:sumJul+=responses[j].score;++nbResponsesJul;break; 
                case 7:sumAout+=responses[j].score;++nbResponsesAout;break;
                case 8:sumSep+=responses[j].score;++nbResponsesSep;break;
                case 9:sumOct+=responses[j].score;++nbResponsesOct;break;
                case 10:sumNov+=responses[j].score;++nbResponsesNov;break;
                case 11:sumDec+=responses[j].score;++nbResponsesDec;break;    
            }        
        }
        if(nbResponsesJan>0){
            question.set('jan',sumJan/nbResponsesJan);
        }
        if(nbResponsesFeb>0){
            question.set('feb',sumFeb/nbResponsesFeb);
        }
        if(nbResponsesMar>0){
            question.set('mar',sumMar/nbResponsesMar);
        }
        if(nbResponsesApr>0){
            question.set('apr',sumApr/nbResponsesApr);
        }
        if(nbResponsesMay>0){
            question.set('may',sumMay/nbResponsesMay);
        }
        if(nbResponsesJun>0){
            question.set('jun',sumJun/nbResponsesJun);
        }
        if(nbResponsesJul>0){
            question.set('jul',sumJul/nbResponsesJul);
        }
        if(nbResponsesAout>0){
            question.set('aout',sumAout/nbResponsesAout);
        }
        if(nbResponsesSep>0){
            question.set('sep',sumSep/nbResponsesSep);
        }
        if(nbResponsesOct>0){
            question.set('oct',sumOct/nbResponsesOct);
        }
        if(nbResponsesNov>0){
            question.set('nov',sumNov/nbResponsesNov);
        }
        if(nbResponsesDec>0){
            question.set('dec',sumDec/nbResponsesDec);
        }
       questionsModel[i]=question; 
    }
    tclController.getStore('TCL').loadRawData(questionsModel);
 }               

我的网格行看起来像脏记录,如何解决。

谢谢。

最佳答案

在 Ext JS 5 和 6 中,您可以将 false 传递给 dirty 选项。当设置为 false 时,设置的字段值将被理解为非脏值(来自服务器的新值)。 dirty 选项默认为 true。

record.set({ name: 'value', age: 42}, {
  dirty: false
})

或者

record.set('age', 42, {
  dirty: false
})

Ext JS 5 引入了 set 方法的选项参数。

关于extjs - 设置模型的新属性并且不将其标记为脏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992409/

相关文章:

model-view-controller - 动态管理 Ext.app.Application.controllers

javascript - 存储/列表不重新加载 Sencha 1.1.1

extjs - 从 ExtJs 的组合框中获取完整的模型对象?

javascript - ExtJs - 树拖放 - 将新拖动的节点设置为所选节点

javascript - 如何使用 JavaScript、Ruby on Rails 禁用浏览器后退按钮?

javascript - ExtJS4 模板参数

css - 复选框附近的虚线边框 IE9

extjs - 有没有办法将 Sencha Touch 转换为 Sencha EXTJ(或 EXTJ 到 Touch)?

javascript - 在 ExtJS4 中悬停时获取网格单元格值

javascript - ExtJS4 动态更改 TextField 空文本