div click事件会自动在页面加载时触发

时间:2014-01-01 14:24:07

标签: javascript knockout.js

我想创建一系列html页面(例如,ddd有员工详细信息列表)。当用户点击div时,我想导航到另一个页面。请查看this

 问题是当我第一次加载页面时,div的click事件被触发了。   如何避免在页面加载事件期间被触发的不必要的点击事件?

以下是我的HTML代码

<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

1 个答案:

答案 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')">