在Knockout中直接使用函数传递参数是不行的,会导致函数在初始化时就被调用,例如:

<span style="font-size:14px;"><div data-bind="click:changeEditor($index)"></div>
</span>

将导致函数在初始化时,点击事件changeEditor()函数就被调用,显然,违背初衷。

要实现参数的传递,有2种方法:

1、方法一:使用函数包裹

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

点击事件响应函数又套了一层,调用chageEditor函数,在原changeEditor()函数调用中传入参数。

2、方法二:使用bind函数

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

使用该方式传递参数时,$data为形式化写法,不能改变,后面可带若干参数,如param1,param2等。

3、缺省的参数传递

<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>

即使绑定定义中函数不带任何参数,data和event两个参数总会被缺省传递,data指当前的viewModel对象,event为事件对象。

注意:在bind方式传递参数时,data和event两个参数依然被缺省传递,新加入的参数,在使用时排在第一位,例如,进行下面的定义:

<span style="font-size:14px;"><div data-bind="click:changeEditor.bind($data,$index)"></div></span>

在使用时,index 为第一个参数。

function changeEditor(index,data, event){alert('参数:'+ index + ',' + data+ "," + event);alert(arguments.length);var tmp = data;tmp.headerText = 'OK!!!';tmp.editing = true;// columns2[idx](tmp);
}

Knockout 事件传递参数的方法相关推荐

  1. Knockout事件传递参数的几种方式

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  2. [html] 在两个iframe之间传递参数的方法有哪些?

    [html] 在两个iframe之间传递参数的方法有哪些? 通过postMessage与父级通过,父级传递消息通过websocket通信如果是同一个域名下可用stroage,监听storageChan ...

  3. [html] 在两个iframe之间传递参数的方法有哪些

    [html] 在两个iframe之间传递参数的方法有哪些 通过postMessage与父级通过,父级传递消息通过websocket通信如果是同一个域名下可用stroage,监听storageChang ...

  4. python 反向传值_Django中reverse反转并且传递参数的方法

    在写项目的过程中,有些函数不可避免的需要传入参数进去,所以我们在使用reverse进行反转时也需要传递参数.这个时候我们就可以使用 'reverse()' 中的 kwargs 参数了,它将传入一个字典 ...

  5. php中参数传值的三种方法,php cli传递参数的方法

    php cli传递参数的方法 $options = "f:g:"; $opts = getopt( $options ); print_r($opts); 在命令行下运行 /usr ...

  6. url 特殊字符 传递参数解决方法

    url 特殊字符 传递参数解决方法 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码. 十六进制值  1. + UR ...

  7. Extjs中给同一个GridPanel中的事件添加参数的方法

    Extjs中给同一个GridPanel中的事件添加参数的方法: this.isUse = new Ext.Action({             text:'启用',             sco ...

  8. java怎么跟qtp脚本传参数_QTP多个Action之间传递参数的方法详解

    脚本的朋友们都会碰到多个Action之间传递参数的问题,想当年我也是研究了好久才成功的,网上虽然有很多文章都在讲这个问题,但是大多都是雷同的抄来抄去不能解决实际问题,也有可能是我太笨了吧.下面我们来详 ...

  9. linux的 定时器传参数,JavaScript 定时器调用传递参数的方法

    JavaScript定时器调用传递参数的方法,需要的朋友可以参考下. 无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许 ...

最新文章

  1. [YTU]_1066 ( 输入n个数和输出调整后的n个数)
  2. mfc 子窗体任何消息都不触发_winform让窗体一直显示在桌面上以及FindWindow
  3. java at发短信_发送短信(1)
  4. mybatis实现动态sql语句
  5. 计算机软考笔记之《数据库基础》
  6. c51 嵌入汇编语言,在C51中嵌入汇编
  7. 唏嘘!暴风影音官网、APP挂掉,办公地人去楼空,官方心酸回应...
  8. python2 与python3 区别的总结 持续更新中......
  9. Android中ImageSwitcher结合Gallery展示SD卡中的资源图片
  10. java表头表体动态返回_JAVA LIST 简单分页 集成EXT4 grid表头动态返回
  11. (原创)创建windows域---深入理解域概念
  12. MPMLink 中 通过 零件号+MBOM版本,查询正确的EBOM版本(相当于对等部件功能)
  13. 高效人士睡觉前做的10件事
  14. 订单下单成功后如何等待支付成功
  15. 具有三个元素的集合X共有29个拓扑
  16. VMware导入ova/ovf虚拟机文件
  17. android 携程页面,android 仿携程首页源码(自定义button)
  18. 激光功率的测量方案和设备
  19. Python学习笔记(六)Python基础_数据类型——字符串
  20. PHP 的输入与输出

热门文章

  1. 怎样将计算机硬盘的资料彻底删除吗,3种技巧|如何从USB永久删除/清除文件
  2. pyspark:FPgrowth
  3. 分众传媒广告引团购服务再升级 多家跟进“随时退”
  4. 【Apple】用iphone,ipad看电脑上的视频
  5. 我的 Mac 终端配置(Mac OSX + iTerm2 + Zsh + Oh-My-Zsh)
  6. 超便捷mail163手机邮箱登录方法
  7. c语言验证卡布列卡猜想,西安电子科技大学刘三阳教授为新生作专题讲座
  8. VR全景拍摄,助力民宿多元化宣传
  9. 【博学谷学习记录】超强总结,用心分享|大数据之Presto
  10. 溪云初起日沉阁 山雨欲来风满楼