【发布时间】:2015-07-27 11:50:54
【问题描述】:
正在努力学习 Knockoutjs。我找到了一个 Knockoutjs 自定义绑定相关的代码,但这不是很好。
<input data-bind="value: name" />
<hr/>
<div data-bind="fadeInText: name"></div>
ko.bindingHandlers.fadeInText = {
update: function(element, valueAccessor) {
$(element).hide();
ko.bindingHandlers.text.update(element, valueAccessor);
$(element).fadeIn();
}
};
var viewModel = {
name: ko.observable("Bob")
};
ko.applyBindings(viewModel);
我只是不明白人们何时使用自定义绑定?
1) 如果可能的话,请告诉我在什么情况下可以选择自定义绑定?
2) 如果有人看到代码,那么他们可以理解自定义绑定 fadeInText 和 viewModel 没有关系,但它仍然可以工作。怎么样?
3) 如果会有多个视图模型,那么我如何在绑定时指定视图模型名称和绑定名称?
上述代码的jsfiddle链接http://jsfiddle.net/rniemeyer/SmkpZ/
4) 如何在没有自定义绑定的情况下实现相同的输出?有可能吗?
请明智地回答我的问题。谢谢
【问题讨论】:
-
这是我不久前写的一篇文章,可能对您的一些问题有所帮助:knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
-
@RPNiemeyer 好文章,顺便说一句。帮助我真正开始使用自定义绑定。
-
自定义处理程序的原因?纯度。视图模型不应该直接进行任何视图操作(即 DOM 的东西)。它应该只操纵数据/模型本身。绑定处理程序将任何 DOM 操作(和 jQuery 内容)与 viewModel 隔离开来,从而使其保持纯净且更具可测试性。
-
任何人都可以看到我发布的代码并告诉我如何在没有自定义绑定的情况下完成相同的任务.....想法将不胜感激。谢谢
标签: knockout.js ko-custom-binding