我需要在内部div高度大于外部div高度时通过knockout自定义绑定处理程序调用一个外部滚动函数。
我怎样才能每次使用自定义代码实现此目的。
Html代码是:
<div class="ModifiedNotesListSection" style="height:300px;">
<div class="Innerdiv" data-bind="EnscrollActive:{}">some dynamiic Content</div>
</div>
Knockout绑定是:
ko.bindingHandlers.EnscrollActive = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var ActualHeight = $(element).height();
var ParentHeight = $(element).parents(".ModifiedNotesListSection").height();
if (ActualHeight > ParentHeight) {
$(element).parents(".ModifiedNotesListSection").enscroll({
verticalTrackClass: 'track4',
verticalHandleClass: 'handle4',
minScrollbarLength: 28
});
}
}
};
注意:您可以在if条件中编写任何JQuery add class方法,而不是这个enscroll方法。
答案 0 :(得分:0)
最后,如果内部div的高度大于外部div的高度,则需要跟踪div元素的高度变化并执行一些操作。 &#34;丑陋&#34;每次div元素高度变化时都会通知part,并且knockout没有开箱即用的解决方案。 :(
您需要编写一些代码来每隔X次跟踪DOM元素的高度。请查看以下答案:https://stackoverflow.com/a/9628472/4067893
然后,你可以
enscroll
fn,而无需自定义knlockout绑定init
fn中。或者使用一个observable,每当div元素的高度发生变化时它就会发生变化并将其发送到绑定(data-bind="EnscrollActive: yourObservable"
)。在最后一种情况下,您需要使用自定义绑定的update
fn。我希望它有所帮助。