var scrollheight=$('#scrollbox').attr('scrollHeight');
我想做类似上面的事情,而不使用jquery。我跨过来了,我可以使用knockoutjs元素绑定 - data-bind="element: scrollbox"
元素绑定在knockoutjs中
但我不知道该怎么办呢
var scrollheight=$('#scrollbox').attr('scrollHeight');
我想做类似上面的事情,而不使用jquery。我跨过来了,我可以使用knockoutjs元素绑定 - data-bind="element: scrollbox"
元素绑定在knockoutjs中
但我不知道该怎么办呢
我想说的是,从阅读您的意见,KnockOutJS是不是在你的情况下的最佳人选在滚动上处理Ajax。
This question处理window.scroll(...)
函数并进行ajax
调用。
Afaik,ko没有自己的内置元素绑定。我创建了一个,我在几个项目中使用,看起来是这样的:
ko.bindingHandlers.element = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var name = ko.utils.unwrapObservable(valueAccessor());
viewModel[name] = element;
}
};
然而,结合的时候,我用引号把视图模型属性名称,像data-bind="element: 'elementName'"
。然后,视图模型是这样的:
function MyViewModel() {
var self = this;
self.elementName = undefined;
self.doSomething = function() {
$(self.elementName).fadeOut();
};
}
记住self.elementName
仍将undefined
后才ko.applyBindings
执行。所以你应该只在click或其他事件绑定中使用它,这些绑定在viewmodel绑定后作为函数执行。
添加自定义绑定
ko.bindingHandlers.scrollTo = {
init: function(element, valueAccessor) {
jQuery(element).show().focus();
if (jQuery(element).position() != null) {
jQuery(window).scrollTop(jQuery(element).position().top);
}
}
};
和在HTML中使用它:
data-bind="scrollTo: {}
你想要的属性'scrollHeight'绑定到另一个元素的值? – Darbio
没有。当滚动高度增加时,我想让ajax调用获取更多内容 –
您确定要在KO中执行此操作吗?数据绑定比事件处理更重要。 '$(window).scroll(...)'应该可以解决你的问题。 – Darbio