我曾想尝试使用 knockout.js,但并不真正需要它。然而,我正在构建一个新屏幕,并想知道是否值得在 knockout.js 中尝试使用 jquery。
这是谷歌日历重复预约屏幕。现在我想做的是非常类似于它们可能的复选框、下拉列表和单选按钮。
每个选择都会影响摘要部分。因此,如果我取消选中“F”,那么摘要应该会更新。
淘汰赛会让我更容易构建摘要部分吗?或者他们还有什么可以帮助我的吗?
我曾想尝试使用 knockout.js,但并不真正需要它。然而,我正在构建一个新屏幕,并想知道是否值得在 knockout.js 中尝试使用 jquery。
这是谷歌日历重复预约屏幕。现在我想做的是非常类似于它们可能的复选框、下拉列表和单选按钮。
每个选择都会影响摘要部分。因此,如果我取消选中“F”,那么摘要应该会更新。
淘汰赛会让我更容易构建摘要部分吗?或者他们还有什么可以帮助我的吗?
这是你可以用 Knockout.js 做的事情。KO 不一定是 jQuery 的替代品,而是一个更高级别的层来帮助模型和视图绑定(即 VMMV)。jQuery 仍然适用于动画,最重要的是 AJAX 调用。取决于你在做什么,KO 和 jQuery 可以很好地相处。
KO 可能很难让你头脑清醒,但一旦你做到了,它就非常棒了,并且让某些事情变得非常简单。例如,我只处理了单击星期几并显示它的部分:
http://codepen.io/CWSpear/pen/IbkvJ
如果没有检查任何内容,则不会显示任何内容,但是一旦您开始检查内容,它就会显示检查的日期(即Weekly on Thursday
)。
JavaScript 只有几行代码。神奇的是绑定:
每个输入都有一个data-bind="checked: days"
属性,这意味着当它们被检查时,它们会自动添加到days
我的 ViewModel 中的变量中,即ko.observeableArray
. 这意味着它正在监视这些复选框,一旦有变化,它就会通知任何依赖它的东西。
事实证明,我们的summary
变量是 a ko.computable
(这是一个可计算的 observable)。它有一个属性:data-bind="text: summary, visible: days().length > 0"
. 这意味着它只有在非空时才可见days
,并且文本在我们的 javascript 中定义为“Weekly on [list of days
]”
我已经在各种不同的项目中使用 Knockout 大约 18 个月了。根据我的经验,Knockout 对于将行为绑定到表单状态然后最终将这些表单转储回您的服务器非常有用。
在我看来,淘汰赛的最大缺点是:
对于这个用例,您并不是特别容易受到前两个的影响。你可能是第三个,但如果你已经在其他地方使用 Knockout,我会说去吧。