2
我开始学习knockoutjs,并且遇到了一个错误。 Aptana编辑器在以下位置显示错误:Knockoutjs不工作
data-bind: ....
标签的属性抱怨它是专有标签。我已经确保包含所有必需的JavaScript文件,并且我已经检查了以前的问题:knockoutjs template not working。 这里是我的代码:
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='jquery-1.8.2.min.js'></script>
<script src='jquery.tmpl.min.js' type='text/javascript'></script>
<script src='knockout-2.2.0.js' type='text/javascript'></script>
</head>
<body>
<script>
function AppViewModel() {
this.firstName = "Bert";
this.lastName = "Bertington";
}
ko.applyBindings(new AppViewModel());
</script>
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
</body>
</html>
即使忽略集锦,并希望该浏览器将显示它我还是什么也得不到了。我使用Firefox 16,但我也尝试过IE 8,但无济于事。
伟大的工作,但为什么?为什么脚本应该在标记之后?我将要写的所有脚本应该如何? –
在脚本执行之前DOM尚未加载。另一种选择是将其封装在[jQuery的'ready'](http://api.jquery.com/ready/)函数中。 '$(function(){ko.applyBindings(new AppViewModel());});' – sghill
内嵌您标记的脚本标记与浏览器对该标记的处理同步执行,所以'sghill'指出DOM元素不是准备好当你尝试应用绑定。通过将脚本移动到底部,可以确保您定位的DOM元素可用。或者,使用jQuery'ready'回调将确保您的代码在加载DOM之前不会运行。请参阅http://knockoutjs.com/documentation/observables.html ...搜索Activating Knockout。 –