时间:2021-05-26
目的
click绑定主要作用是用于DOM元素被点击时调用相关JS函数。最常见用于button、input、a元素。
例如:
You've clicked 0timesClick me源码:
<div>You've clicked <span data-bind="text: numberOfClicks"></span> times<button data-bind="click: incrementClickCounter">Click me</button></div><script type="text/javascript">var viewModel = {numberOfClicks : ko.observable(0),incrementClickCounter : function() {var previousCount = this.numberOfClicks();this.numberOfClicks(previousCount + 1);}};</script>如上述例子,没点过button被点击时都会触发incrementClickCounter 回调函数,从而更新视图状态。
备注,click后所跟的并不一定非得是视图模型的函数。可以是任何对象的函数,直接引用即可。例如:click: someObject.someFunction。
备注1:传递一个参数
当您的处理程序中,UI展示了一个监控属性数组,例如:
LondonRemove
ParisRemove
TokyoRemove
源码:
<ul data-bind="foreach: places"><li><span data-bind="text: $data"></span><button data-bind="click: $parent.removePlace">Remove</button></li></ul><script type="text/javascript">function MyViewModel() {var self = this;self.places = ko.observableArray(['London', 'Paris', 'Tokyo']);// The current item will be passed as the first parameter, so we know which place to removeself.removePlace = function(place) {self.places.remove(place)}}ko.applyBindings(new MyViewModel());</script>当点击remove时只会删除当前的项目,从源码上看,说明传递的是当前项目。这种在渲染集合数据的时候特别有用。
需要注意两点:
如果你是一个嵌套在绑定上下文,例如,如果使用foreach或with绑定,但你的处理函数是根视图模型或其他一些父模型,你需要使用一个前缀,如$parent或$root定位处理函数。
在您的视图模型,但是这是可以使用self(或其他一些变量)作为this的一个别名。
备注2:传递事件对象(多参数)
一些情况下,你可能需要访问DOM的事件对象(event),一般情况下KO会将事件对象作为第二个参数传递给函数。例如:
<button data-bind="click: myFunction">Click me</button><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>如果你要传递更多的参数,可以使用函数文本的方式。例如:
<button data-bind="click: function(data, event) { myFunction('param1', 'param2', data, event) }">Click me</button>还有更优雅的写法,比如使用bind函数绑定多个参数。例如:
<button data-bind="click: myFunction.bind($data, 'param1', 'param2')">Click me</button>备注3:允许默认点击动作
默认情况下,Ko会阻止任何默认动作。比如你把click绑定到一个a标签上,当点击时,浏览器会调用click绑定的回调函数。但是不会执行href的连接跳转。
如果你不希望这种默认的阻止动作。可以在回调函数中返回true。
备注4:防止冒泡事件
默认情况下,KO允许click绑定继续到任何高级别的事件处理。例如,父元素和子元素都有click绑定,那么这两个元素的click绑定会都被触发。
可以使用一个附加绑定clickBubble来解决该问题:
<div data-bind="click: myDivHandler"><button data-bind="click: myButtonHandler, clickBubble: false">Click me</button></div>如上述例子,myButtonHandler将被调用,而附件绑定clickBubble,并设置了false,这至使父元素的myDivHandler不会被调用。
备注5:与Jquery互动
如果存在Jquery的click事件,KO将会去调用Jquery的click事件,如果你想总是使用自己本地的事件来处理,可以在ko.applyBindings中加入如下代码:
ko.options.useOnlyNativeEvents = true;以上所述是小编给大家介绍的KnockoutJS 3.X API 第四章之click绑定,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
第四章XML语法提纲:一.XML语法规则二.元素的语法三.注释的语法四.CDATA的语法五.Namespaces的语法六.entity的语法七.DTD的语法通过
《外贸来函电》这门课程有十一章自内容,包括:bai第一章商务信函的格式、du第二章商务信函的写作原则、第三章建立dao业务关系、第四章询盘、第五章报盘、第六章C
各位抖音达人注意,抖音内容电商禁售类目规范调整了,其中第三章违规处理及附则有变化,具体的变化看下面。变更1变化前:变化后:变更2变化前:变化后:第四章附则第十一
1、前言工作中涉及到文件系统,有时候需要判断文件和目录是否存在。我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。2、sta
各位亲爱的会员:闲置商品交易较为特殊,其交易纠纷的处理也存在特殊性,此次将在《淘宝争议处理规则》“第四章特殊交易争议处理规范”中新增关于闲鱼(闲置)市场的争议处