我有一个使用淘汰赛 foreach 语法绑定数据的 div。
<div id="myDiv" data-bind="foreach: { data: myData }, myCustomBinding: { param: paramname }">
<a id="myLink" class="myLink" data-bind="text: label"></a>
</div>
myData 是一个保存数据的 ObservableArray。我在 myData 上有一个淘汰订阅,如下所示:
myData.subscribe(function () {
if (myData().length > 0) {
resizeDiv();
}
});
在 resizeDiv() 函数中,如果所有控件组合的大小大于 div 宽度,我试图从该 div 中删除一些链接并移动到不同的隐藏 div。但问题是此时控件宽度不可用。稍微调整浏览器大小后,控件宽度在 DOM 中刷新。我添加了一个窗口调整大小事件,它调用相同的 resizeDiv() 方法。
$(window).on('resize', function () {
resizeDiv();
});
不确定我是否能够表达我的问题/担忧。如果您需要任何进一步的信息,请告诉我。
更新: 这是小提琴http://jsfiddle.net/2m3Jk/7/。但是绑定处理程序并没有在小提琴中触发。在我的应用程序中,绑定处理程序正在触发,如果我调整窗口大小,菜单项将从一个 div 移动到另一个 div。但不是在页面加载时。