导入
枚举实现问题
让我们来了解一下在应用程序中实现枚举属性时出现的一些新问题。
本章将介绍如何使用原生 JavaScript 构建前端 Web 应用程序,并处理枚举属性。我们还将学习如何应对多值属性,因为许多情况下枚举属性都是多值的。
新增问题
除了之前讨论的验证应用中遇到的复杂性之外,在实现枚举属性时还会出现以下新问题:
- 我们将模型类
Book的 ES5 基于构造函数的类定义替换为对应的 ES2015class定义。这在保留 JavaScript 类构造函数语义的同时,提供了更便捷的语法。 - 不再显式定义 setter 方法,而是利用 ES5 中隐式的
get和set方法特性,因为它们可以在类定义中方便地进行定义。 - 枚举数据类型必须以合适的方式在模型代码中进行定义。
- 枚举属性需要在模型类中定义,并通过合适的选项控件在用户界面中进行处理。
此外,代码中还出现了以下问题:
- 在模型代码中,现在需要关注以下事项:
- 定义一个 ES2015 的
Book类。 - 为
Book类的所有属性定义get/set方法。 - 使用工具类
Enumeration来定义枚举。 - 定义单值枚举属性
originalLanguage,并将这些属性与其校验函数checkOriginalLanguage和checkCategory一起组织。 - 定义多值枚举属性
otherAvailableLanguages和publicationForms,并为其配套定义校验函数checkOtherAvailableLanguages和checkPublicationForms。 - 扩展
Book.update和Book.prototype.toString方法,使其能够处理新增的枚举属性。
- 定义一个 ES2015 的
- 在用户界面(即视图代码)中,需完成以下任务:
- 在
retrieveAndListAllBooks.html中添加新的表格列,并在createBook.html与updateBook.html中添加合适的选项控件。 - 在
pl.v.retrieveAndListAllBooks的setupUserInterface()方法中为新属性创建输出内容。 - 在
pl.v.createBook与pl.v.updateBook的setupUserInterface()方法中允许对新属性进行输入。
- 在