knockout事件传递参数的方法:
在knockout中直接使用函数传递参数是不行的,会导致函数在初始化时就被调用
<span>
<div data-bind="click:changeEditor($index)"></div>
</span>
这是错误的。
方法一:使用函数包裹
<div data-bind="event:{ click:function(data,event){ changeEditor('param1','param2',data,event) } }">mouse over</div>
点击事件响应函数又套了一层,调用changeEditor函数,在原changeEditor函数调用中传入参数
方法二:使用bind函数
<button data-bind="event:{ click:changeEditor.bind($data,'param1','param2') }">mouse over</button>
使用该方法传递参数时,$data为形式化写法,不能改变,后面可带若干参数,如:param1,param2等
注:在bind方式传递参数时,data和event两个参数依然被缺省传递,新加入的参数在使用时排在第一位,如:
functionchangeEditor(param1,param2,data,event){
}