Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 在主干js中在只读视图和编辑视图之间切换_Backbone.js - Fatal编程技术网

Backbone.js 在主干js中在只读视图和编辑视图之间切换

Backbone.js 在主干js中在只读视图和编辑视图之间切换,backbone.js,Backbone.js,我在主干js中寻找在只读和编辑视图之间切换的模式。如果视图的触发器位于视图外部,那么我可以创建适当的视图(只读或编辑)并渲染它,但在我的情况下,编辑视图的触发器将位于只读视图内部 例如,假设我正在显示一个处方,默认情况下它处于只读模式,悬停时会显示一个编辑图标。单击此编辑图标后,只读视图现在应替换为编辑视图。实现这一目标的最佳方法是什么。下面是我正在考虑的几个选择 有一个带有编辑图标和编辑模式所需的所有表单字段的处方视图。它还具有根据编辑触发器将视图从只读模式更改为编辑模式的逻辑 有两个视图Pr

我在主干js中寻找在只读和编辑视图之间切换的模式。如果视图的触发器位于视图外部,那么我可以创建适当的视图(只读或编辑)并渲染它,但在我的情况下,编辑视图的触发器将位于只读视图内部

例如,假设我正在显示一个处方,默认情况下它处于只读模式,悬停时会显示一个编辑图标。单击此编辑图标后,只读视图现在应替换为编辑视图。实现这一目标的最佳方法是什么。下面是我正在考虑的几个选择

  • 有一个带有编辑图标和编辑模式所需的所有表单字段的处方视图。它还具有根据编辑触发器将视图从只读模式更改为编辑模式的逻辑
  • 有两个视图PrescriptionReadView和PrescriptionEdit视图。ReadView将具有编辑图标,单击“将ReadView替换为editview”
  • 我倾向于#2,但不确定如何优雅地实现它。对此的任何想法都会有所帮助

    谢谢
    Zafer

    如果您将“漂亮”视图与“编辑”视图分开,您的生活将大大减少痛苦,因为无论出于何种目的,它们都是相同数据的两个不同视图,具有不同的事件处理需求和不同的行为。因此,你的直觉引导你走向第二条,这是对的


    我能想到的最干净的实现是创建一个容器视图(比如,PrescriptionView),它可以处理模式交换事件。容器将拥有对当前活动处方视图的引用,并将处理该视图的创建以及非活动视图的清理(移除和取消绑定)。这使所有的逻辑保持良好和独立。

    您可以通过主干网传输交换逻辑。路由器,“编辑”按钮只会激活一条路由,该路由的处理程序会告诉PrescriptionView切换到编辑模式;“处方编辑视图”中的“保存/取消”操作可能会激活“显示处方”路由。@mu-与让子视图触发处方视图正在侦听的事件相比,这有什么好处吗?@lecstor:这主要是您希望在何处耦合以及是否希望在URL中编辑/显示状态的问题;如果显示/编辑只是页面的一小部分,那么您可能根本不想弄乱URL。从简单的无路线方法开始很好,也很有意义,但是记住路线方法,这样你就知道你可以使用什么工具了。谢谢,我已经实现了Tess的解决方案,效果很好。但是知道基于路由的方法也很好,我会稍后再尝试,看看哪一种更适合我。你知道如何在DOM的同一级别使用视图,而不是嵌套在父对象中的视图/编辑来实现这一点吗?我试着制作处方,处方视图,处方编辑,让它们都指向同一个el。然后我调用新的Namespace.Views.PrescriptionView({model:this.model,el:this.el})将子级的el设置为这个。它在加载时工作,但无论我做什么,都无法显示编辑。