Javascript 基于第一个淘汰教程,为什么我的代码没有运行?

Javascript 基于第一个淘汰教程,为什么我的代码没有运行?,javascript,data-binding,knockout.js,Javascript,Data Binding,Knockout.js,我理解教程在页面上的工作原理,但我试图在本地设置一个来创建一个计算器,但无法让knockout.js工作。它不像knockout.js在线教程那样初始化或填充 HTML 有什么建议吗?您正在头脚本标记中应用绑定,因此在ko.applyBindings(new AppViewModel())行运行时,还没有任何要绑定的元素 可以为JQuery Window.load函数提供回调,以确保在应用绑定之前正确加载所有内容。例如: <script type="text/JavaScript" lan

我理解教程在页面上的工作原理,但我试图在本地设置一个来创建一个计算器,但无法让knockout.js工作。它不像knockout.js在线教程那样初始化或填充

HTML


有什么建议吗?

您正在头脚本标记中应用绑定,因此在ko.applyBindings(new 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> 

函数AppViewModel(){
this.firstName=ko.可观察(“伯特”);
this.lastName=ko.observable(“伯丁顿”);
}
//激活knockout.js
$(窗口)。加载(函数(){
应用绑定(新的AppViewModel());
});

如果您没有使用jquery,请不要专门为此加载它。相反,您可以在window.onload上激活knockout。例如:

将ko.applyBindings调用包装到函数中:

function startKnockout() {
    ko.applyBindings(new AppViewModel());
};
将“开始”函数的名称传递给window.onload。注意,不要将()添加到函数名中。这样可以防止函数立即执行,并确保在加载窗口时将其作为回调函数调用

window.onload = startKnockout;

这也需要JQuery插件。我通常建议使用这个,但我注意到您的示例代码中没有包含JQuery。问得好。我也有同样的问题。多亏了这个帖子。如果您不使用jQuery,我已经添加了一个答案。任何人都不应该仅仅为了解决这个问题而加载jQuery。
function startKnockout() {
    ko.applyBindings(new AppViewModel());
};
window.onload = startKnockout;