淘汰新手,任何人都可以发现为什么这不起作用

时间:2014-12-01 14:39:13

标签: javascript asp.net-mvc knockout.js

我创建了一个MVC 4.0项目来测试Knockout,标记如下所示(BTW我从NUGET加载了所有最新的东西)下面显示的是从MVC渲染View后的客户端源代码。我查看了网络端,看到所有链接和脚本都到达了客户端。浏览器是Chrome。控制台没有显示任何错误。最后,永远不会呈现myMessage文本。如果我在JS中放置断点,我确实看到Knockout库被调用了......只是想知道我在这里做错了什么。

  <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <script src="/Scripts/jquery-2.1.1.js"></script>
        <script src="/Scripts/jquery.validate.js"></script>
        <script src="/Scripts/jquery.validate.unobtrusive.js"></script>
        <script src="/Scripts/knockout-3.2.0.js"></script>

        <link href="/Content/site.css" rel="stylesheet" />

        <script src="/Scripts/modernizr-2.6.2.js"></script>
    </head>
    <body>

        <h2>Index</h2>
        Today's message is: <span data-bind="text: myMessage"></span>

        <script type="text/javascript">
            var viewModel = {
                myMessage: ko.observable() // Initially blank
            };
            viewModel.myMessage("Hello, world!"); // Text appears
        </script>
    </body>
    </html>

2 个答案:

答案 0 :(得分:3)

你需要调用ko.applyBindings。试试这个:

<script type="text/javascript">
            var viewModel = {
                myMessage: ko.observable() // Initially blank
            };
            ko.applyBindings(viewModel) // you need to initialize ko :)
            viewModel.myMessage("Hello, world!"); // Text appears
</script>

答案 1 :(得分:1)

你错过了淘汰'applyBindings'中最重要的部分。

构建视图模型后,只需调用

即可

第1步:起点

 ko.applyBindings(viewModel) 

第2步:下一个视图模型执行

var viewModel = {
                myMessage: ko.observable() 
            };

参考淘汰文档http://knockoutjs.com/documentation/introduction.html

用于测试您的方案的示例小提琴Here