ExtJs中点击页面有时不加载的问题

项目中遇到ExtJs点击菜单时页面不加载的问题,表现为浏览器不请求数据且呈现假死状态。问题根源在于ViewModel的alias重名,即使在view中使用requires保证引用正确,仍然可能出现此问题。当尝试加载其他页面时,由于alias冲突,浏览器不再请求加载,导致假死。解决方案是手动修改ViewModel的alias,避免重复,从而消除页面假死现象。

前段时间项目中遇到了一个问题,点击某个菜单浏览器不请求任何数据,也不加载页面内容,一度是“假死”状态,况且这种情况是不定时出现,纠结了很久。

经过很长一段时间发现原来是定义时ViewModel的alias重名问题导致:

Ext.define('ulooerp.view.sales.morgage.MorgageModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.morgage',

在其他地方也有一个相同的alias定义“viewmodel.morgage

Ext.define('ulooerp.view.sales.order.MorgageWindowViewModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.morgage',

尽管在view中调用viewModel时添加了requires保证引用正确,但还是会出现“假死”

requires: [
    'ulooerp.view.sales.morgage.MorgageModel',
    'ulooerp.view.sales.morgage.MorgageController'
],

viewModel: {
    type: 'morgage'
},
这是因为现在extjs开发基本都用单页模式,如果上一个请求加载了
ulooerp.view.sales.morgage.MorgageModel

这时候再点击菜单请求加载另外一个

'ulooerp.view.sales.order.MorgageWindowViewModel'

由于view层的写法viewModel:{type:'morgage'},这时候浏览器寻找alias:'morgage'发现已经存在,就不再请求加载了,导致了页面假死。

修改:

Ext.define('ulooerp.view.sales.morgage.MorgageModel', {
    extend: 'Ext.app.ViewModel',
    alias: 'viewmodel.morgageList',

结论: 开发过程中由于使用sencha extjs 插件自动生成viewModel,对于重名或者相似文件生成的ViewModel的alias可能会重复,这时候我们可以手动修改alias,防止出现假死状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值