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应用:Iframe自适应其加载的内容高度
Apr 10 Javascript
创建公共调用 jQuery Ajax 带返回值
Aug 01 Javascript
js控制多图左右滚动切换效果代码分享
Aug 26 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
JavaScript实现form表单的多文件上传
Mar 27 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
编写一个javascript元循环求值器的方法
Apr 14 Javascript
微信小程序实现watch监听
Jun 04 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
PHP新手上路(十二)
2006/10/09 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
php生成HTML文件的类方法
2019/10/11 PHP
web前端开发也需要日志
2010/12/09 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
解决Vue项目中tff报错的问题
2020/10/21 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python的Django框架使用入门指引
2015/04/15 Python
python开发之文件操作用法实例
2015/11/13 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python读写csv文件的方法
2019/08/13 Python
Python简单实现区域生长方式
2020/01/16 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
房屋所有权证明
2014/10/20 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Python初识逻辑与if语句及用法大全
2021/08/07 Python