我正在尝试使用knockout,并将用户输入的名字和姓氏连接在一起。它基于这个例子:http://knockoutjs.com/examples/helloWorld.html
我试着稍微修改一下函数来感受一下knockout。代码看起来不错,但输出没有变化。然后我测试了一下教程中的代码是否对我有效,但它不能。我非常确定我遗漏了一些非常明显的东西。谁能告诉我那是什么?
这是我的HTML:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<!--view-->
<head>
<meta charset="utf-8" />
<title>Testing Knockout</title>
<script src="knockoutTester.js"></script>
<script src="knockout-3.4.0.js"></script>
</head>
<body>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
</body>
</html>这是我的JS:
var ViewModel = function (first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.fullName = ko.pureComputed(function () {
return this.firstName() + " " + this.lastName();
}, this);
};
ko.applyBindings(new ViewModel("Planet", "Earth"));谢谢
发布于 2016-08-11 02:38:24
您的JS代码很好。问题在于您在HTML文件中添加JS文件的顺序:
<script src="knockoutTester.js"></script>
<script src="knockout-3.4.0.js"></script>为了让你的代码正常工作,你需要先加载Knockout,然后再加载你的自定义代码。因此将上面的代码行更改为
<script src="knockout-3.4.0.js"></script>
<script src="knockoutTester.js"></script>它应该开始起作用了。
您还需要确保您的自定义JavaScript代码仅在加载DOM之后运行,因为所有DOM元素都应该在脚本运行时加载。您可以使用jQuery的方法$(document).ready或使用任何其他替代方法(例如,如$(document).ready equivalent without jQuery中所述)。
或者,您可以在正文的底部包含行<script src="knockoutTester.js"></script> (这样它只在加载上面的DOM之后加载)
https://stackoverflow.com/questions/38880791
复制相似问题