我看到一段关于 Knockout 的代码并通过了它,但我无法理解这段代码是如何工作的。这是将普通方法与 Knockout 视图模型绑定的完整代码。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/knockout-2.2.1.js"></script>
<script src="Scripts/jquery-1.7.1.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" data-bind="click: callalert" name="knockoutbtn" value="Call Knockout Method"/>
<input type="button" name="normalbtn" id="nbtn" value="Call Normal Method"/>
<script type="text/javascript">
var callmethod = function () { //Normal Method which would be
alert('hello'); //called from knockout binding
} //also from the normal button click
$(document).ready(function () { //Binded the Method with normal button
$("#nbtn").live("click", callmethod);
});
ko.applyBindings({ //Binded the method with ko view model
callalert : callmethod
});
</script>
</div>
</form>
</body>
</html>
我只是不明白这段代码的含义是什么:data-bind="click: callalert"
而且也不明白这段代码:
ko.applyBindings({ //Binded the method with ko view model
callalert : callmethod
});
似乎当用户单击第一个按钮时,将调用一个方法 namedcallalert
但在代码中没有方法 named callalert
。当用户单击第二个按钮时,将调用一个名为 named 的方法callmethod
。
所以请帮助我理解上面的代码。尤其是这两点
1) data-bind="click: callalert"
2) ko.applyBindings({ //Binded the method with ko view model
callalert : callmethod
});
更新
假设如果有人在下面看到它
var person = {
firstName: 'John',
lastName: 'Doe',
sayHi: sayHiFunction,
pets: ['Cat', 'Dog']
};
那么谁会理解 sayHiFunction 是一个函数,因为没有像 sayHiFunction() 这样的括号?
如果您查看上面的代码,那么您可以看到
$(document).ready(function () { //Binded the Method with normal button
$("#nbtn").live("click", callmethod);
});
该 callmethod 由 jquery 代码调用。那么为什么在用户单击按钮时需要调用 callmethod 的代码中定义了两次。一旦它由 jquery 完成,一旦它由敲除绑定完成?你能详细解释一下吗?
如果我删除 jquery 部分,那么当用户单击按钮时将调用 callmethod。等待你的答复。谢谢