我想创建一系列html页面(例如,ddd有员工详细信息列表)。当用户点击div时,我想导航到另一个页面。请查看this。
问题是当我第一次加载页面时,div的click事件被触发了。 如何避免在页面加载事件期间被触发的不必要的点击事件?
<div data-bind="click: clickMe('ok1')">
<h1>Emplyee details</h1>
<p>This is test</p>
</div>
<div data-bind="click: clickMe('ok2')">
<h1>Emplyee details</h1>
<p>This is test</p>
</div>
var ViewModel = function(){
var self = this;
self.clickMe = function(url){
//This function is automatically getting called
//when page loads.
alert(url);
}
}
ko.applyBindings(new ViewModel());
此致 Hemant
答案 0 :(得分:48)
您需要将函数传递给单击处理程序而不是单击函数的结果。
执行clickMe()
会触发该方法并将结果返回给处理程序。
执行所需操作的一种方法是将函数调用包装在匿名函数中,如下所示:
function(){ clickMe('params'); }
所以你得到:
<div data-bind="click: function(){ clickMe('ok1'); }">
或者,您可以使用bind
方法上的clickMe
函数传递所需的参数:
clickMe.bind($data, "param1")
所以你得到:
<div data-bind="click: clickMe.bind($data, 'param1')">