我理解该教程如何在页面上运行,但我正在尝试在本地设置一个以创建计算器,并且无法使knockout.js工作。它没有像knockout.js在线教程那样初始化或填充。
HTML
<html>
<head>
<script type="text/javascript" language="javascript" src="../knockout-2.1.0.js"></script>
<script type="text/JavaScript" language="javascript">
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
</script>
</head>
<body class="calc" onLoad="createnav()">
<div id="all">
<div id="calc">
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
</div>
<div id="info">
<!-- outputs will be here -->
</div>
</div>
</body>
</html>
我正在使用knockout.js版本2.1.0。至于src
的位置是正确的。
文件夹结构
----------
| Root |
----------_____________________
| |
------------------- ------------ ---------------
| knockout-2.1.0.js | | pphcalc | ___ | HeroPilot.asp |
------------------- ------------ ---------------
有什么建议吗?
答案 0 :(得分:1)
如果您没有使用jquery,请不要专门为此加载它。相反,你可以在window.onload上激活knockout。例如:
将ko.applyBindings调用包含在函数中:
function startKnockout() {
ko.applyBindings(new AppViewModel());
};
将“开始”功能的名称传递给window.onload。注意,不要将()添加到函数名称中。这可以防止函数立即执行,而是确保在加载窗口时将其作为回调函数调用。
window.onload = startKnockout;
答案 1 :(得分:0)
您正在标头脚本标记中应用绑定,因此在您的ko.applyBindings(新AppViewModel())行运行时,尚未绑定任何元素。
您可以为JQuery Window.load函数提供回调,以确保在应用绑定之前正确加载所有内容。示例:
<script type="text/JavaScript" language="javascript">
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
}
// Activates knockout.js
$(window).load(function() {
ko.applyBindings(new AppViewModel());
});
</script>