【发布时间】:2016-01-18 19:00:06
【问题描述】:
我正在尝试最简单的 knockout.js 示例,但它不起作用(名字和姓氏保持为空)。我将脚本标签放在使用绑定的 html 标签之后,并在页面加载后调用 ko.applyBindings。警报起作用,因此函数会触发。有什么帮助吗?
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<script type="text/javascript' src='js/knockout-3.4.0.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function AppViewModel() {
alert("b");
this.firstName = "Bert";
this.lastName = "Bertington";
}
$(window).load(function() {
ko.applyBindings(new AppViewModel());
});
</script>
编辑 这个问题解决了,但我还有一个。如果我想在单击按钮后(而不是在输入失去焦点时)同时添加名字和姓氏,该怎么办?
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<a class="btn btn-primary btn-lg" role="button" >Add</a>
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<script type="text/javascript" src="js/knockout-3.4.0.js"></script>
<script type="text/javascript">
function AppViewModel() {
this.firstName = ko.observable();
this.lastName = ko.observable();
}
ko.applyBindings(new AppViewModel());
</script>
【问题讨论】:
-
如果将
$(window).load更改为$(document).ready会发生什么? -
没有变化