由于网站的构建方式(Joomla),HTML从不同的位置被拉到一起,并且JavaScript以一种不易预测的顺序添加到头部。
我有一个包含绑定的HTML和js文件以及一个用于呈现通用警报框的Knockout模型。然后我有其他其他文件有自己的Knockout模型和绑定,我希望能够弹出警报框。
我正在考虑ko.utils.extend
,并使用弹出框模型扩展每个页面模型,但我的实际案例比描述的更复杂,我无法确定两个JavaScript文件的顺序(页面KO)模型和弹出KO模型)将出现在头部。
如果您不知道这两个模型将被放入文档头的顺序,是否可以采用两个KO模型并绑定它们?
答案 0 :(得分:1)
ko.applyBindings可以接收第二个参数,即dom节点将应用绑定。
因此,您可以在两个不同的dom节点中绑定两个不同的模型。
var viewModel1=function (){
}
var viewModel2=function(){
}
ko.applyBindings(viewModel1,document.getElementById("div1"));
ko.applyBindings(viewModel2,document.getElementById("div2"));

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div id=div1>
</div>
<div id=div2>
</div>
&#13;
如果多次绑定dom节点,则会出现错误。