首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.5.2  处理数组和对象

处理数组和对象的一种方式是允许用户对每个属性使用分离的ObjectViewer对象访问数组和对象。可以选择几种表现方式,这里我们选择的是将子对象表现为弹出窗口,就像分级菜单一样。

为了达到这个目标,我们需要做两件事情。首先,需要在对象定义中添加type属性,并且定义所支持的类型:

objviewer.TYPE_SIMPLE="simple";

objviewer.TYPE_ARRAY="array";

objviewer.TYPE_FUNCTION="function";

objviewer.TYPE_IMAGE_URL="image url";

objviewer.TYPE_OBJECT="object";

我们修改了那些为自身并没有携带类型信息的对象生成spec信息的函数,如代码清单4-13所示。

代码清单4-13  已修改的autoSpec()函数


注意,我们也添加了对按数字索引的数组的支持,它的元素不能通过for...in类型的循环来发现。

我们需要做的第二件事情是修改PropertyViewer以考虑不同的类型,并且相应地呈现它们,如代码清单4-14所示。

代码清单4-14  已修改的PropertyViewer构造函数

为了适应不同类型的属性,我们定义了几种呈现方法,它们的具体实现太过详细,无法在这里完整地复制。整个ObjectViewer的源代码可以从本书的配套网站下载。

现在我们已经有了相当完整的方法来自动查看领域模型。为了使领域模型对象可视化,我们需要做的所有事情就是将objViewSpec属性分配给它们的原型。例如,图4-7中显示了为视图提供支持的Planet对象,在它的构造函数中有以下语句:

this.objViewSpec=[

  {name:"name",      type:"simple"},

  {name:"distance", type:"simple", editable:true},

  {name:"diameter", type:"simple", editable:true},

  {name:"image",     type:"image url"},

  {name:"facts",     type:"array", addNew:this.newFact, inline:true }

];

这个定义中的标注是JavaScript对象标注,称为JSON。方括号代表数字数组,花括号代表关联数组或者对象(两者其实是相同的)。我们在附录B中将更加充分地讨论JSON

这里还有几个实体没有解释。addNewinlineeditable是什么意思?它们的目的是通知视图,用户不仅可以查看还可以修改领域模型的这些部分,这就将控制器方面引入了系统。我们将在下一节考察这些内容。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论