淘汰赛.js事件上下文
Knockout.js event context
>我开始使用 KNOCKOUT 重新实现一些 js 代码.js。我有一个带有一些功能的单例:
Dps = {
someFunction: function() {
this.anotherFunction();
},
anotherFunction: function() {
console.log('tehee');
}
}
现在还有一些绑定可以调用此单例的函数:
<input type="text" data-bind="event: { change: Dps.someFunction }" />
烦人的是,被调用函数中的上下文是事件,所以我不能调用this.anotherFunction()
有没有摆脱这种情况的好方法?
PS:我知道我可以做一些类似 Dps.someFunction() 的事情,但在我看来这并不好。
data-bind="event: { change: Dps.someFunction.bind(Dps) }"
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
你的函数表现为"静态"
所以要么你必须做 Dps.otherFunction,但你不想要那个,但我不明白为什么 tbh。
你也可以调用ko.applyBindings(Dps),然后你的代码就可以正常工作了。但是,我想这也不是您要找的。可能你还有另一个视图模型,不是吗?
另一种解决方案是将 Dps 变成一个你实例化的函数
关于 jsfiddle: http://jsfiddle.net/PrbqZ/
<input type="text" data-bind="event: { change: myDps.someFunction }" />
var Dps = function() {
var self = this;
this.someFunction = function() {
self.anotherFunction();
};
this.anotherFunction = function() {
console.log('tehee');
};
}
var myDps = new Dps();
//normally use dom ready, just simulating here
setTimeout(function(){
ko.applyBindings();
}, 500)
相关文章:
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- File Upload事件上下文和javascript
- API Google Maps Javascript在上下文菜单中调用事件侦听器
- 收听单选按钮取消选择事件而不知道按钮's上下文(骨干视图)
- query点击事件获胜't返回激发上下文
- extjs中事件处理程序函数中的THIS上下文
- Babel中的d3事件回调上下文更改
- 如何在父视图中绑定子视图处理事件的上下文
- 显示和隐藏上下文菜单时的 Jstree 调用事件
- 单击文本框的右键单击上下文菜单的“删除”后触发的事件
- jQuery移动触摸事件处理,此关键字上下文,并正确使用闭包
- Jstree上下文菜单在右键单击时select_node抑制更改事件
- 淘汰赛.js事件上下文
- 处理右键单击事件后不显示上下文菜单
- 角度控制器中的上下文感知科尔多瓦事件
- 上下文菜单的 Jquery 停止事件
- 从 Jquery 上下文菜单项的下拉列表中获取所选值,选择更改事件
- TinyMCE onPaste 不设置内容,使用上下文菜单粘贴不会触发更改事件
- 咖啡脚本 - 保留类上下文和事件上下文
- 手动触发的JavaScript事件未针对iFrame上下文内的元素传播