【发布时间】:2014-03-10 15:38:42
【问题描述】:
我正在开发一个遗留 Web 应用程序,该应用程序主要使用插件作为可重用模块构建。例如 - 当开发人员需要获取标准输入框并在其旁边附加一个修改输入框内容的下拉菜单(货币,例如添加 $)时,开发人员会调用 $(#input).currencyDropdown(settings),它会附加 HTML (select 带有一系列选项)从插件中检测更改/使用标准 jQuery 处理更新,没有淘汰赛。
现有模式的目标是减少代码的复制——包括标记和 JS 逻辑。我正在尝试将应用程序更多地推向淘汰赛/MVVM,但我不确定这是否不包括插件使用。我觉得我应该以某种方式将目标 input 替换为数据绑定模板。这里的挑战是,在所有地方,我只有一个input,除非通过插件,否则我无法更新 DOM。
我见过用于逻辑/样式的自定义绑定处理程序,但就附加实际的 HTML 标记而言,自定义绑定处理程序是正确的方法吗?当在应用程序的不同区域的多个视图模型中重用此模式时,模板应该在哪里发挥作用(如果有的话)?
举个例子,假设我有一个不是剔除数据绑定的输入:
<input>
我们的目标是,从插件内部,将其更改为数据绑定的 sn-p:
<input data-bind='value: amount'><select data-bind='stuff here'>
amount 是一些计算出的 observable,取决于所选内容。作为奖励,根据选择的内容,可能需要显示一个弹出窗口。
在上述限制内淘汰应用程序的推荐策略是什么?
【问题讨论】:
标签: jquery knockout.js