我想将我的淘汰视图模型定位到dom的某个部分,如下所示:
ko.applyBindings(Myviewmodel,$('#Target')[0]);
但是我不希望它适用于它下面的所有doms.这样做的原因是整个SPA的工作效果不佳 – 无法跟上由于将每个潜在的交互包含在一个巨大的对象中而产生的巨型视图模型.因此,页面由多个部分视图组成.我希望每个partials实例化自己的viewmodel并为父进程提供交互接口.
一些样本dom
<div id="Target"> <!--Everything here should be included except--> <div data-bind="DoNotBindBelowThis:true"> <!--Everything here should NOT be included by the first binding,I will specifically fill in the binding with targetted ApplyBind eg. ko.applyBindings(MyOtherviewmodel,$('#MyOtherTarget')[0]) to fill the gaps--> <div id="MyOtherTarget"> </div> </div> </div>
我怎样才能从applyBindings中排除用DoNotBindBelowThis标记的div下面的整个dom树?
解决方法
看看这篇博文:
http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html
基本上,您可以创建自定义绑定,如:
ko.bindingHandlers.DoNotBindBelowThis = { init: function() { return { controlsDescendantBindings: true }; } };