淘汰剧本不起作用

时间:2014-02-13 16:08:51

标签: javascript knockout.js knockout-mvc

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <link href="/Content/site.css" rel="stylesheet"/>

    <script src="/Scripts/modernizr-2.6.2.js"></script>
<script src="/Scripts/jquery-1.8.2.js"></script>
<script src="/Scripts/knockout-2.2.0.debug.js"></script>


</head>
<body>


<h2>Index</h2>






    <script type="text/javascript">
        // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI
        function AppViewModel() {
            this.firstName = "Bert";
            this.lastName = "Bertington";
        }

        // Activates knockout.js
        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>

上面的代码不会返回我选择的名字和姓氏。我尝试使用knockout knockout-2.2.0.js进行更改但不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:3)

它不起作用的原因是你要求knockout在你想要绑定的DOM元素被加载之前应用绑定,所以当knockout遍历DOM寻找数据绑定时它将找不到您的p元素(它们尚未加载,因为它们位于脚本标记之后)。

将脚本标记移动到正文的末尾,或者通过运行在ko.applyBindings事件中调用DOMContentLoaded的代码,确保在DOM完成加载之前不运行代码。