2012-08-28 17 views
0

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

到目前为止,这并不是很难做到。但这是问题。只有在某些条件得到满足的情况下才能显示某些卡片。例如,我有一张卡片,允许用户查看上传的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友好的解决方案来解决这个难题。

回答

0

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

+0

好点。我应该去掉handler()调用,并在控制器中正确读取所选记录中的属性。 – Terrence

+0

我想知道现在是否会更好地将项目_添加到tree_中,因为应用程序中的不同条件得到满足。 – Terrence