【问题标题】:Best practice for loading non model data in ExtJS在 ExtJS 中加载非模型数据的最佳实践
【发布时间】:2015-06-18 16:08:02
【问题描述】:

假设我的数据库中有 2 个表,一个用户表和一个文件夹表。它们与我的后端 java 代码中的两个模型(bean)匹配,并且与我的 extjs 客户端中的模型类似。使用 viewmodel 架构,我想创建一个 form,显示 username 和他们使用 viewmodel 绑定amount 创建的文件夹/em>。数据库中的每个文件夹都有一个 CREATE_USER_ID 字段,其中包含创建该文件夹的用户的 ID。如何加载所需的数据?

【问题讨论】:

    标签: extjs viewmodel


    【解决方案1】:

    Viewmodel 的设计目的不是直接加载数据(也根本不是设计为加载非模型数据)。你有两个选择:

    1. Go 模型(推荐)。两个子选项:
      • folder_amount 字段添加到您的客户端用户模型。在服务器端,这不一定需要添加,您可以调整 API 向客户端提供数据以动态添加该字段。
      • 如果您想让您的客户端模型与其服务器伙伴完全匹配,请结合关联使用 viewmodel(参见示例 here,向下滚动到关联)来加载文件夹本身,尽管在 UI 中只显示它们的数量.请注意,您不需要加载所有文件夹字段,只需加载它们的 ID。
    2. 坚持你自己喜欢的非模型方法,但这与视图模型绑定没有任何关系。例如,这可能是在 UI 中呈现用户数据时进行 AJAX 调用以检索文件夹的数量。

    【讨论】:

    • 我的问题再一次没有被理解。我不想加载用户的文件夹,我想加载用户创建的 amount 文件夹。这与关联无关。不要卡在视图模型绑定问题上,问题是关于加载过程。在我们加载了所需的数据以及我们将如何为我们的视图处理它之后,视图模型就会出现。我们是否为视图模型创建了一个新字段?也许是自定义临时模型?
    • 从应用程序的客户端/浏览器端的角度来看,用户拥有的文件夹的数量只是用户模型中的另一个字段。就客户端而言,将其视为单独的非模型数据有什么意义?保持简单。如果您不希望您的服务器端用户模型也将文件夹数量缓存在一个字段中,那么只需调整您的 API 将用户数据提供给客户端,以便它动态添加 folder_amount 字段。
    • 出于一致性原因,我们的目标是让客户端模型匹配后端模型。我认为每次要显示复合和非引用信息时向模型添加新字段是不好的做法。这不是我们有视图模型的原因吗?给出通过绑定预处理信息的视图?
    • 服务器和客户端模型之间的一致性不应成为其自身的目标(除非它对你来说是一种宗教),因为它们有不同的目的。存在用于存储数据和业务逻辑的服务器模型。客户端模型只是出于 UI 目的反映其服务器伙伴。在某些情况下,保持一致性不会增加价值,反而会浪费精力;这应该逐案查看。在您的情况下,我猜文件夹的数量只会在前端显示(而不是编辑),因此您可以安全地让前端将其视为另一个字段。答案已更新。
    • 问题是,添加一个字段将使其可通过视图模型绑定访问,但由于我的其余 api GET 请求不会自行加载文件夹数量,因此我需要制作另一个“自定义”ajax请求只是为了获取此特定信息。之后我是否将它放在模型字段中,或者只是将值直接设置为 displayfield 最终更多的是偏好问题。动态更改模型代理的 rest api 以匹配也会带来额外信息的新服务是一种好习惯吗?还是为了简单起见,我应该只使用一个额外的 ajax 请求?
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多