Extjs开发MVC应用时,可以把store和model类的定义单独放到一个文件。但是Model里面的fields是硬编码写死的,怎么样才能根据从服务器动态获取的数据来生成不同的fields呢。
示例model:
Ext.define('TEST.model.Site', {
extend: 'Ext.data.Model',
fields: ['SiteId','Seq','SiteGroup','Name','Department','ExpectedSize', 'Status']
});我尝试通过给Model定义一个init函数来动态修改model的fields,但是store里面如果有多条数据的话,model的init函数竟然会多次执行,向大家请教一下解决办法,非常感谢!EXTJSMVCMODEL
示例model:
Ext.define('TEST.model.Site', {
extend: 'Ext.data.Model',
fields: ['SiteId','Seq','SiteGroup','Name','Department','ExpectedSize', 'Status']
});我尝试通过给Model定义一个init函数来动态修改model的fields,但是store里面如果有多条数据的话,model的init函数竟然会多次执行,向大家请教一下解决办法,非常感谢!EXTJSMVCMODEL
解决方案 »
- 如何让submit按钮在onclick事件中return false的情况下不要提交?
- 表单选择的问题?
- 关于JavaScript学习方面的书籍<JavaScript权威指南>的问题
- js动态生成iframe
- 急求高手解答:如何取出特定标记对内的内容
- 如何用javascript新开窗口?
- 关于WEB页面打印中的问题
- 如何编写合并、拆分单元格的语句
- 如何实现:当打开一个页面时,如何让一个隐藏的层(装着小图片)显示在页面某一位置(该位置坐是动态变化的),当鼠标移动到该层时,该层
- 如何用正则表达式来判断输入的数是否为浮点数,此浮点数可以包括科学计数法
- js 等比例压缩图片大小
- 把一日分为3块的日历,大家有这个控件吗?
Ext.define('TEST.model.Status', {
extend : 'Ext.data.Model',
fields : [],
init : function() {
me = this;
Ext.Ajax.request({
url : 'action/GetColumn',
success : function(response) {
me.fields = Ext.decode(response.responseText).fields;
}
});
}
});这个代码的问题是,如果和这个model相关的store有多条数据,init函数就会执行多次,就会多次发送ajax请求。
model里面的fields是动态变化的,无法穷举的,所以没办法多写几个Model。
model里面的fields是动态变化的,无法穷举的,所以没办法多写几个Model。
你这里说的Model中的fields是动态变化的,是什么意思:是同一个Model的fields会变化,还是不同的Model的fields不同?要是同一个Model的fields动态变化的话,那就没辙了,谁知道你什么样的数据对应什么样的fields啊,要是不同的Model带有不同的fields,你多写几个Model定义也是可以的,只不过当你的Model较多时,你的Model定义会比较臃肿而已;若是同一个Model,fields确定这种情况的话,那你提供的代码中,在一个Model定义的init方法中,再通过异步请求来获取相应的fields就显得没有意义了你说,请求Model中的fields的方法多次被调用的问题,你维护一个缓存不就可以了么,比如,你请求过的Model放入一个集合中(Ext.util.MixedCollection),每次请求的时候先检查一下你维护的这个集合中有没有,没有的话,在发送请求,不就可以了么其实你动态生成这个Model的话,你把请求不同fields的方法放到Model中不是很好,你单独再创建一个js类,把它抽取出来专门进行维护不是更好么(仅提个建议参考)