基于第一淘汰赛教程,为什么是我的代码没有运行?(Based on the first knockou

2019-09-20 06:09发布

我理解的教程是如何工作的页面上,但我想设置一个本地创建一个计算器并不能得到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 |
   -------------------        ------------       ---------------

有什么建议么?

Answer 1:

所以有没有绑定任何元素在你的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> 


Answer 2:

如果你不使用jQuery,不要特意加载了这一点。 相反,你可以在window.onload激活淘汰赛。 例:

包装你ko.applyBindings在函数调用:

function startKnockout() {
    ko.applyBindings(new AppViewModel());
};

通过你的“开始”功能,在window.onload的名称。 请注意,不添加()函数名。 这防止立即执行该功能,而是确保在加载窗口时,它被称为一个回调函数。

window.onload = startKnockout;


文章来源: Based on the first knockout tutorial, why is my code not running?