【问题标题】:Can't choose wether to use MV* or not to use MV*无法选择是否使用 MV* 或不使用 MV*
【发布时间】:2017-12-21 16:45:00
【问题描述】:

我有一个任务,我需要通过 JavaScript 渲染博客的内页。

页面具有无限滚动功能。

在初始页面加载时,我通过 HTML 中的 JSON 字符串 获取初始帖子的所有数据,然后使用 JavaScript 呈现它。

对于下一页(无限滚动),我需要调用 API,然后它会返回相同的 JSON 字符串 用于下一篇文章。

我的问题是 - 我应该如何甚至应该使用 MVC 来实现这一点?我对这个概念还很陌生,仍在尝试正确的方向。

我现在正在考虑以下设置。

data.js - 一个对象,我将在其中存储从 JSON 字符串获取的所有数据,并且当我进行调用时,它将具有 update(APIJSON) 方法从 API 更新自身.

template.js - 只是模板文字 - 接受日期,返回 HTML。

view.js - 在 constructor 中将 data.js 作为 this.data,然后有 >render 方法获取模板返回的 HTML,并通过 innerHTML 将其放入内容中。

model.js - getPost() 方法调用 api,返回数据。

controller.js - 这是我不确定在这里做什么的部分。控制器是否应该监听滚动事件,如果我到达页面末尾,它应该告诉模型执行 getPost(),然后查看执行 render()?如何将我从模型的 getPost() 获得的数据传输到我的视图 render() 中?我似乎无法从 XHR 请求内部调用视图?

我错过了什么吗?或者也许我对 MVC 工作原理的整个概念是错误的?我需要的只是有人让我走上正轨,剩下的我会自己做。真的很喜欢 JavaScript,几个月前才开始学习。

【问题讨论】:

    标签: javascript jquery html model-view-controller model


    【解决方案1】:

    controller.js 文件可以承载一个方法,该方法将触发从模型中获取数据并(将其返回到 view | 更新 数据。 js 并在 Promise/Ajax 调用解决时触发观察者呈现它)。

    但是对于这么小的项目,没有必要过于严格。只需使用对您将来最容易维护且对您有意义的结构即可。

    【讨论】:

    • 感谢您向我解释流程,Bananenmannfrau!我想在这里使用 MV*,这样我就可以以实用的方式学习它。也许你可以给我一个小例子,说明在这样的项目中观察者和控制器会是什么样子?似乎我在关于这一切如何运作的理论中跳过了一些东西。几乎 - controller.js 会有一个方法,比如 loadArticle() = 会有类似 this.model.getPost() 的东西,对吧?如何在滚动时正确调用此方法?然后当 getPost() 请求完成时,我该如何告诉 view 渲染它获得的数据?
    • 查看这些链接:en.wikipedia.org/wiki/Observer_pattern stackoverflow.com/questions/15861344/… 尝试使用它。这是让它点击的最好方法。阅读总是只能让你到目前为止:)
    猜你喜欢
    • 2018-06-09
    • 2011-09-27
    • 1970-01-01
    • 2019-01-16
    • 2017-12-25
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多