【发布时间】:2011-07-05 18:21:11
【问题描述】:
我正在编写一个 CMS,它允许以所见即所得的方式在网站上创建和编辑元素(内容块)。基本上,登录后,您会在视觉上看到同一个网站,但悬停并单击元素会显示编辑器(如 Aloha)或其他控件。
例如:
- 悬停段落会显示 侧面的小菜单允许 在左,中和之间选择 右对齐
- 点击段落可编辑
- 将鼠标悬停在图像上会在图像右侧显示一个点,可以拖动该点从而改变图像的宽度(高度会按比例更新)
- 将网站中的任何块悬停会弹出一个“+”按钮,允许在悬停的块之前创建另一个块。
- 等
我目前的策略是使用我在Nike Better World 上看到的并且一直使用的类似技术:有一个实例化 javascript,它在每个具有 data-controller 属性的 html 元素上调用 jquery 插件,名称为由 data-controller 属性指定的插件。
稍微扩展这个概念,我会用它来将各种控件附加到内容块。
但是,作为一个菜鸟,直到最近我才遇到了 javascript mvc 框架,例如backbone.js。我一直在服务器端(在 Kohana 中)使用 MVC,但还没有在 javascript 中使用。似乎我可以使用它,但我不清楚,策略是什么。我正在开发的 CMS 是一种介于适当的 javascript 应用程序和老式 html 网站之间的混合体。我不明白,我如何使用,例如,backbone.js 的内容块的集合对象,如果它们已经加载到页面 html 中(这对我来说用 javascript 加载它们没有意义)。
有人有什么建议吗?
【问题讨论】:
-
我认为您需要针对特定问题提出特定问题。问“我如何构建 CMS”有点含糊。我建议如果你想学习 Backbone,然后退后一步,尝试构建一些小的东西。
-
你必须用js加载它们。例如某些页面包含块。页面是集合。块是模型。当您加载页面渲染集合时,您可以将事件附加到每个模型视图。
-
我确实认为我的问题不是很模糊。我需要知道如何不通过 javascript 加载所有模型,而是让它们已经在 html 中(可能带有数据属性?)并告诉骨干这些特定模型已经加载。 ...当然,如果这是一个好习惯的话。
标签: javascript model-view-controller backbone.js edit-in-place