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 相关文章推荐
javaScript面向对象继承方法经典实现
Aug 20 Javascript
js中生成map对象的方法
Jan 09 Javascript
js实现精确到秒的日期选择器完整实例
Apr 30 Javascript
Javascript之String对象详解
Jun 08 Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 Javascript
基于JavaScript实现图片剪切效果
Mar 07 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
详解Node.js中的Async和Await函数
Feb 22 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
Vue3为什么这么快
Sep 23 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
Nov 05 Javascript
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
ADODB的数据库封包程序库
2006/12/31 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python读写ini文件的方法
2015/05/28 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
python3注册全局热键的实现
2020/03/22 Python
keras中的backend.clip用法
2020/05/22 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
python元组拆包实现方法
2021/02/28 Python
小学教师国培感言
2014/02/08 职场文书
年会搞笑主持词
2014/03/27 职场文书
五年级学生评语
2014/04/22 职场文书
政治思想表现评语
2014/05/04 职场文书
争先创优公开承诺书
2014/08/30 职场文书
2014年团支书工作总结
2014/11/14 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
工作犯错保证书
2015/05/11 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
首都博物馆观后感
2015/06/05 职场文书
八年级作文之友谊
2019/12/02 职场文书
MySQL数据库查询之多表查询总结
2022/08/05 MySQL