【发布时间】:2015-05-06 19:58:25
【问题描述】:
ko.js 网站上的所有示例都是手动构建的,模型和视图都是手工制作的。
如果我想在没有在后端创建数据绑定属性的站点上使用 ko.js,该怎么办?是否可以在文档中动态应用绑定?
否则,ko.js 似乎只支持自定义项目,而不是例如。 CMS 网站,例如 WordPress 或 Drupal(无需大量定制)。
假设我有一个从 CMS 呈现的漂亮表单,我想将它与 ko.js 一起使用以提供功能。怎么添加ko.js?
【问题讨论】:
-
如果 CMS 足够“灵活”,KnockoutJS 非常适合 CMS。例如,我为(静态/无 DB)GetSimple CMS 编写了KO Site Settings 插件。鉴于所有 CMS 都支持钩子(我认为?),如果 1)您知道一些 PHP(如果需要,还有 SQL)来配置 KO 数据的发送/保存方式(在我的插件中,我将数据发送到 PHP 脚本AJAX)和 2)您可以在后端包含 Knockout 库,一切就绪。
-
有趣。我在几个项目中使用了 GetSimple。你如何在GS中利用KO?或者您将如何在网站中使用它?就地/实时编辑?是否还有其他模块依赖于这个 ko 模块?
-
好吧,我目前正在彻底检查它,因为 v0.1 是一种测试“草稿”,因此代码可读性不强。 this screenshot from the version I'm working on 上的设置列表是一个 observableArray;所以我用它在后端提供一个响应速度非常快的 UI。 KO 允许我处理几乎所有客户端(AJAX 数据发送;HTML 而不是 PHP 模板和 json 数据保存/检索)
-
但是,如果你想进行现场编辑,你必须有条件地预渲染页面(如果用户登录到后端)并添加 ko 绑定,然后初始化它(这可能被证明是一项非常艰巨的任务)。如果您正在寻找与 HTML 分离的纯 JS 视图实现,您可能对React.js 更感兴趣(如果用户已登录,则更容易包含 JS 文件)。
-
但是回到我最初的问题,即动态添加数据绑定属性。找到一篇关于它的文章:codeproject.com/Articles/138654/… 在那篇文章中,javascript 调用了自定义 setupbindings 函数,该函数添加了 ko.js 数据绑定属性,然后调用了 applybindings。这有点向后攀登,但它是完全禁止或合理的方法吗? (作为一种快速的'n'dirty方法)。
标签: javascript forms data-binding knockout.js content-management-system