【问题标题】:Backbone: Handling static viewsBackbone:处理静态视图
【发布时间】:2014-08-03 00:07:03
【问题描述】:

在 Backbone 中处理静态视图的最佳方式是什么?

我当前的方法是使用 css 类或 javascript(带或不带 jquery)显示或隐藏视图。使用此方法时出现问题;一旦视图嵌套得太深,控制每个视图就会变得复杂。我的方法的一个示例是我的website (code),但它的嵌套深度不足以导致问题。

我的建议是像处理动态内容一样,使用模板和模型,并呈现所需的视图。这样一来,为了降低复杂性,请使用 marionette,这似乎非常适合动态视图。


【问题讨论】:

    标签: javascript backbone.js static-content


    【解决方案1】:

    我很惊讶您在使用 toggle class 策略时遇到了问题。你能举一个具体的例子来说明这种情况变得混乱吗?您提到您网站的代码不是问题,那是什么?哪里有味道?

    我这么说只是因为似乎切换可见性确实是最直接的选择,您可能会想太多。除非我误解了你的用例。此外,这个问题不会有“最佳”答案。这取决于情况。

    编辑:

    这是一个很难直接回答的高级问题。你问的关键是“我如何管理复杂的视图状态和交互”。动态/静态 html 之间的区别并不重要,无论您如何为子视图生成 html,您都面临着您概述的挑战。

    也就是说,您提到您正在使用骨干网。请记住,主干只是帮助您构建解决方案的工具,如果您觉得自己在与它作斗争,也许您就是。

    即便如此,如果我在您的评论中实施案例并想坚持骨干约定,是的,我会按照您提到的那样做;我会将我的“静态”视图与“动态”视图相同。主干视图与 html 无关,而更多地与交互上下文有关 - 听起来它是您真正关心的交互上下文。

    所以我有一个名为ProductViewView,它本身有一个TabContainerView。这个TabContainerView 会有TabViews 等等。对于重要的交互状态的每个级别,我都会沿着层次结构向下移动。然后就可以轻松跟踪状态并使用视图。需要跟踪当前可见的选项卡?将属性添加到 TabContainerView。需要隐藏TabContainerView触发的弹窗,在TabContainerView中添加hide方法。

    通过这种方式,您的视图层次结构包含丰富的状态和事件处理程序。此外,您可以以小部件方式开发事物并使用组合来构建非常复杂的体验。

    希望对您有所帮助。

    【讨论】:

    • 您导航到产品,然后单击信息按钮。将打开一个视图,其中包含多个选项卡,您可以导航这些选项卡,其中将显示有关产品的各种信息:历史记录、使用情况等。此视图还有一个关闭按钮。所有产品都有这个,各种信息永远不会改变。我必须跟踪打开的内容,以便在他们切换标签时将其关闭。这样视图就被隐藏了。如果他们单击 X 或关闭视图,则需要隐藏整个视图。混乱的部分是跟踪每个信息视图的所有这些,它是重复的代码,但结合它是棘手的部分
    • 当验证所有视图的产品更改再次隐藏时,我可能需要进行硬重置...此外,每次切换标签时,url都会更新;我找不到在路由器中使用锚点的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    相关资源
    最近更新 更多