Knockout事件绑定意外行为
Knockout event binding unexpected behaviour
我有一个div上scroll
事件的事件绑定。为了解除绑定处理程序,我在模型上引入了一个函数,该函数创建了解除绑定的处理程序,并且我在视图中绑定了这个工厂函数。
我希望我的工厂创建debounced函数,并将其与事件绑定。相反,它似乎在每个事件触发时都会重新创建并调用我的debouncid函数,所以debouncing根本不起作用。
我的视图
<div data-bind="event.scroll: getScrollHandler()"></div>
我的型号
var viewModel = {
getScrollHandler: function(data, evt) {
return debounceFunction(function(data, evt) {
// dp the actual handling...
});
}
};
我希望getScrollHandler
方法在绑定初始化时只执行一次,并且它将绑定返回的函数。
相反,看起来淘汰赛是将其全部封装到一个新功能中,以便在每个滚动事件中运行。
它到底是如何在淘汰赛中发挥作用的?
更新
由于我使用的是TypeScript,而这个处理程序是一个类的成员方法,所以我仅限于这种函数成员分配,我不能直接将反跳函数分配为成员(或者实际上我可以,但只是以某种更丑陋的方式)。
假设您有一个类似于此的实现,其想法是创建一个新函数,然后使用它来代替原始函数。尝试将您的代码更改为:
getScrollHandler: debounceFunction(function(data, event) {
...
})
这将创建一次功能,并在每次激活滚动时重复使用。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 对API数据使用声明性绑定
- 如何销毁/删除/取消绑定SnapSVG.js
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 数据绑定:'系统Char'不包含名为'xxxxx'
- react组件中的绑定方法
- 如何将ngrepeat下的ngmodel绑定到$scope
- Knockout事件绑定意外行为
- 绑定JavaScript课程未捕获语法错误:意外的令牌<
- 意外的数据绑定行为