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

 更新时间:2016年10月10日 11:27:30   作者:SmallProgram  
event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数,这篇文章主要介绍了KnockoutJS 3.X API 第四章之事件event绑定的相关知识,感兴趣的朋友一起看看吧

目的

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绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • JS数组求和的几种常见方法总结

    JS数组求和的几种常见方法总结

    js的数组与我们日常生活中的数组一样,都是会进行求和计算的,下面这篇文章主要给大家介绍了关于JS数组求和的几种常见方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • JavaScipt中栈的实现方法

    JavaScipt中栈的实现方法

    这篇文章主要介绍了JavaScript数据结构与算法之栈详解,本文讲解了对栈的操作、对栈的实现实例等内容,需要的朋友可以参考下
    2016-02-02
  • JavaScript编写点击查看大图的页面半透明遮罩层效果实例

    JavaScript编写点击查看大图的页面半透明遮罩层效果实例

    这篇文章主要介绍了JavaScript制作点击查看大图的页面遮罩层效果实例,透明部分这里使用的是CSS3的rgba,兼容性还是过得去的,需要的朋友可以参考下
    2016-05-05
  • 微信小程序van-field中的left-icon属性自定义实现过程

    微信小程序van-field中的left-icon属性自定义实现过程

    在小程序中,我们是用 Vant 组件库时,常常会用到 van-field 输入框控件,今天我将跟大家分享的是 van-field 输入框控件中的 left-icon 属性的自定义怎么实现,感兴趣的朋友一起看看吧
    2023-08-08
  • js获取form的方法

    js获取form的方法

    这篇文章主要介绍了js获取form的方法,实例分析了javascript操作form表单的技巧,需要的朋友可以参考下
    2015-05-05
  • js禁止页面刷新禁止用F5键刷新禁止右键的示例代码

    js禁止页面刷新禁止用F5键刷新禁止右键的示例代码

    刷新禁止用F5键刷新禁止右键这些在某些特殊情况下还是比较实用的,下面有个不错的示例,感兴趣的朋友可以参考下
    2013-09-09
  • JavaScript 页面编码与浏览器类型判断代码

    JavaScript 页面编码与浏览器类型判断代码

    JavaScript 获取浏览器的类型和页面编码的函数代码。
    2010-06-06
  • JS常见构造模式实例对比分析

    JS常见构造模式实例对比分析

    这篇文章主要介绍了JS常见构造模式,结合实例形式对比分析了工厂模式、构造函数模式、原型模式、寄生构造函数模式、稳妥构造函数模式等相关概念、原理、实现方法与相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • bootstrap模态框消失问题的解决方法

    bootstrap模态框消失问题的解决方法

    这篇文章主要为大家详细整理了bootstrap模态框消失不消失各种问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 关于Ajax的原理以及代码封装详解

    关于Ajax的原理以及代码封装详解

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),相信大家对ajax都很熟悉,下面这篇文章主要给大家介绍了关于Ajax原理以及代码封装的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09

最新评论