KnockoutJS 3.X API 第四章之事件event绑定


Posted in Javascript onOctober 10, 2016

目的

event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数。例如keypress,mouseover或者mouseout等

例如:

Mouse over me

源码:

<div>
<div data-bind="event: { mouseover: enableDetails, mouseout: disableDetails }">
Mouse over me
</div>
<div data-bind="visible: detailsEnabled">
Details
</div>
</div>
<script type="text/javascript">
var viewModel = {
detailsEnabled: ko.observable(false),
enableDetails: function() {
this.detailsEnabled(true);
},
disableDetails: function() {
this.detailsEnabled(false);
}
};
ko.applyBindings(viewModel);
</script>

如上述例子,当鼠标指针移入或者移出Mouse over me时,对于detailsEnabled的值设定true或者false。进而控制Details的显示和隐藏。

和click一样,event后边所跟的格式一般为:event { mouseover: someObject.someFunction },其中的回调函数并不一定非要是视图模型的函数,他可以时任何对象的函数。

备注1:传递一个当前项目作为参数

London
Paris
Tokyo
You seem to be interested in:

源码:

<ul data-bind="foreach: places">
<li data-bind="text: $data, event: { mouseover: $parent.logMouseOver }"> </li>
</ul>
<p>You seem to be interested in: <span data-bind="text: lastInterest"> </span></p>
<script type="text/javascript">
function MyViewModel() {
var self = this;
self.lastInterest = ko.observable();
self.places = ko.observableArray(['London', 'Paris', 'Tokyo']);

// The current item will be passed as the first parameter, so we know which place was hovered over
self.logMouseOver = function(place) {
self.lastInterest(place);
}
}
ko.applyBindings(new MyViewModel());
</script>

需要注意,如果你使用的是嵌套绑定上下文,比如foreach或者with,而需要处理的回调函数在视图模型中或者在父模型中,需要使用$parent或者$root前缀来进行绑定

与click绑定一样,给this取个别名比较好。

备注2:传递多个参数

此处请参考click绑定:

<div data-bind="event: { mouseover: myFunction }">
Mouse over me
</div>
<script type="text/javascript">
var viewModel = {
myFunction: function(data, event) {
if (event.shiftKey) {
//do something different when user has shift key down
} else {
//do normal action
}
}
};
ko.applyBindings(viewModel);
</script>

封装多参数示例:

<div data-bind="event: { mouseover: function(data, event) { myFunction('param1', 'param2', data, event) } }">
Mouse over me
</div>

使用bind函数示例:

<button data-bind="event: { mouseover: myFunction.bind($data, 'param1', 'param2') }">
Click me
</button>

备注3:允许默认动作

同click绑定一样,ko禁止默认动作,比如你将event的keypress事件绑定到一个Input元素上,那这个input元素输入的值将会被keypress回调占用而无法输入任何信息。解决方案很简单,就是在回调函数中返回true即可。

备注4:防止冒泡事件

如果要防止冒泡事件,可以直接在事件绑定后附加一个youreventBubble绑定。将该附加绑定设置为false则禁止冒泡事件的发生,例如:

<div data-bind="event: { mouseover: myDivHandler }">
<button data-bind="event: { mouseover: myButtonHandler }, mouseoverBubble: false">
Click me
</button>
</div>

备注5:Jquery互动

以上所述是小编给大家介绍的KnockoutJS 3.X API 第四章之事件event绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery.validate使用攻略 第二部
Jul 01 Javascript
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
jQuery动态地获取系统时间实现代码
May 24 Javascript
Js base64 加密解密介绍
Oct 11 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
使用text方法获取Html元素文本信息示例
Sep 01 Javascript
如何编写高质量JS代码
Dec 28 Javascript
jQuery的几个我们必须了解的特点
May 03 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
Dec 24 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
vue组件的路由高亮问题解决方法
May 11 Vue.js
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 #Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
Oct 10 #Javascript
KnockoutJS 3.X API 第四章之表单value绑定
Oct 10 #Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
Oct 10 #Javascript
浅谈jquery中使用canvas的问题
Oct 10 #Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 #Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 #Javascript
You might like
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
javascript实现显示和隐藏div方法汇总
2015/08/14 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
python调用fortran模块
2016/04/08 Python
Django如何自定义分页
2018/09/25 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
python实现横向拼接图片
2020/03/23 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
财务内勤岗位职责
2014/04/17 职场文书
大型演出策划方案
2014/05/28 职场文书
公司领导班子对照材料
2014/08/18 职场文书
立志成才演讲稿
2014/09/04 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
代领报检证委托书范本
2014/10/11 职场文书
单位作风建设自查报告
2014/10/23 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
付款承诺函范文
2015/01/21 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
责任书格式
2015/01/29 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
工作计划范文之财务管理
2019/08/09 职场文书