Javascript Knockoutjs不起作用

Javascript Knockoutjs不起作用,javascript,html,knockout.js,Javascript,Html,Knockout.js,我开始学习knockoutjs,我遇到了一个错误。Aptana编辑器在以下位置显示错误: data-bind: .... 标记的属性,该属性抱怨它是专有标记。我已经确保包含所有需要的javascript文件,并且我已经检查了前面的问题:。 这是我的密码: <!DOCTYPE html> <html> <head> <script type='text/javascript' src='jquery-1.8.2.min.js'

我开始学习knockoutjs,我遇到了一个错误。Aptana编辑器在以下位置显示错误:

data-bind: ....
标记的属性,该属性抱怨它是专有标记。我已经确保包含所有需要的javascript文件,并且我已经检查了前面的问题:。 这是我的密码:

<!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>

函数AppViewModel(){
this.firstName=“Bert”;
this.lastName=“Bertington”;
}
应用绑定(新的AppViewModel());
名字:

姓氏:


即使忽略了Aptana并希望浏览器显示它,我仍然一无所获。我正在使用Firefox 16,但我也尝试了IE 8,但没有效果。

将脚本标记移到标记下方

<body>
    <p>First name: <strong data-bind="text: firstName"></strong></p>
    <p>Last name: <strong data-bind="text: lastName"></strong></p>
    <script>
        function AppViewModel() {
            this.firstName = "Bert";
            this.lastName = "Bertington";
        }

        ko.applyBindings(new AppViewModel());       
    </script>
</body>

名字:

姓氏:

函数AppViewModel(){ this.firstName=“Bert”; this.lastName=“Bertington”; } 应用绑定(新的AppViewModel());
太好了,它奏效了,但为什么呢?为什么脚本应该在标记之后?我将要编写的所有脚本都应该是这样的吗?在脚本执行之前,DOM还没有加载。另一种选择是将其封装在函数中<代码>$(函数(){ko.applyBindings(新的AppViewModel());})与标记内联的脚本标记与浏览器对该标记的处理同步执行,因此
sghill
注意到,当您尝试应用绑定时,DOM元素尚未准备就绪。通过将脚本移到底部,可以保证目标DOM元素可用。或者,使用jQuery
ready
回调将确保在加载DOM之前代码不会运行。看见搜索激活敲除。