0

我正在开发一个使用树进行导航的 Ext JS 应用程序。在中心窗格中(使用边框布局),我使用卡片视图。在树上选择一个节点会更改显示的卡片。每张卡可能包含完全不同的组件。

到目前为止,这并不是很难做到的。但这是问题所在。某些卡片只有在满足某些条件时才会显示。例如,我有一张卡片,允许用户查看上传的 CSV 文件。当用户单击树中的“查看 CSV 文件”节点时会显示此卡片。但是,如果用户还没有上传 CSV 文件,并且他点击了该节点,我想显示一张带有文件上传字段的卡片,以便用户可以上传 CSV 文件。

现在,我的控制器初始化中有以下内容:

this.control({
    'nav-tree': {
        select: {
           fn: function(model, record, index){
               record.handler();  
           },
           scope: this
        }
    }
})

record.handler()是在我的模型中定义的函数,它从模型中读取属性 cardId 并将布局切换到具有该 ID 的卡片(它还执行其他一些操作。)

我意识到我可以在我的处理函数中抛出一堆 if 语句来检查 CSV 文件是否已上传并加载适当的卡,但我可以看到这种方法至少有两个缺点:

(1) 它非常不优雅,并且 (2) 我要检查的条件将变得更加复杂,使得 if 语句难以阅读和管理。

我希望有一个更好的 Ext JS 友好的解决方案来解决这个困难。

4

1 回答 1

0

这绝对是应该在控制器中的代码,模型不应该决定加载哪些视图。当然,您可以在模型中添加辅助函数来检索数据/检查数据条件,但任何决策都应该在控制器中进行。

于 2012-08-28T11:51:57.873 回答