繁体   English   中英

是否有一种设计模式可以轻松管理“级联选择”?

[英]Is there a design pattern to manage “cascading choices” easily?

我正在为HTML和javascript中的某些浏览器应用程序制作GUI。

目前,我正面临着实施一个需要进行三级深层“级联选择”的页面的挑战。 我只是想知道是否有一个我可以坚持的设计模式,以使我的代码更易于管理,因为这不是一个非常罕见的问题。

我需要实现的结构如下:

{ A => { B => [C, C, ...] }

我将大致使用以下GUI布局(使用Balsamiq制作 ):

来自Balsamiq的GUI样机

问题是,正如您所看到的,视图的某些部分始终被隐藏/删除,最重要的是我需要在页面的生命周期中存储更改。 它并不像实体模型一样简单,因为我不使用 multiselects来打理一切...

你通常如何解决这类问题?

只需将每个列表放入json容器中
然后在该列表上放置一个单击侦听器,并将特定的json项添加到下一个列表中

//// PSEUDOCODE ////
var json{
  "a": {
    "a1": {
       "b1": "item",
       "b2": "item",
       "b4": "item"
    },
    "a2": {
     //stuff
    }
   },
   "b":{
     "b1": "items"
      //etc
   }
  }


select(){
 var item = clickedItem.id;
 case: a
   putintoB(json.item)
 case: b
   putintoC(json.item)
}

这不会自动化许多事情,但似乎是Observer模式的问题。

基本上,你会有一个观察者观看第一个选择的动作,而另一个观看第二个等等...

当一个观察者被通知时,它将采取行动,例如显示另一个观察者。

这只是一个原始想法,如果没有关于你要做什么的进一步细节,很难给你一个更详细的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM