Knockout文本绑定不适用于输入

Ing*_*als 4 javascript firebug knockout.js

作为Javascripts的初学者,我决定尝试Knockout开始非常简单并且更先进.然而,我甚至无法在一个非常简单的场景中让它工作.

我猜这个问题非常简单,我有点不好意思在这里问这个问题.但我不擅长调试Javascript,也不知道bug会如何表现,所以这里就是这样.

这是asp.net MVC 3生成后页面的html源代码:

<html>

<head>
    <title>Index</title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
</head>

<body>

<h2>Index</h2>

<script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.3.0beta.js" type="text/javascript"></script>

<script type="text/javascript">

    var viewModel = {
        name: "Joe",
        number: "13"
    };

</script>

<script type="text/javascript">
    ko.applyBindings(viewModel);
</script>

<ul>
<li>Name: <input data-bind="text: name"/></li>
<li>Number: <input data-bind="text: number"/></li>
</ul>

<ul>
<li>Name: <span data-bind="text: name"></span></li>
<li>Number: <span data-bind="text: number"></span></li>
</ul>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Joe或13不受输入或文本框的约束.

尝试把它放在一个ko.observable()但也没有工作.就像脚本没有运行一样.

尝试使用FireBug进行调试,我可以看到执行了applyBinding,并且viewModel对象确实包含了正确的变量.

这可能是显而易见的事情.如果你在这里看不到它,那么你可以指出在使用FireBug时我应该寻找什么吗?


编辑

在尝试了几种解决方案的组合后,我仍然遇到问题.使用一个解决方案,HTML看起来像这样:

<html>
<head>

    <title>Index</title>

    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"></script>
    <script type="text/javascript">
            var viewModel = {
                name: ko.observable("Joe"),
                number: ko.observable("13")
            };
    </script>

    <script type="text/javascript">
        $(function () { ko.applyBindings(viewModel); })
    </script>

</head>

<body>
<h2>Index</h2>

<ul>
<li>Name: <input data-bind="text: name"></input></li>
<li>Number: <input data-bind="text: number"></input></li>
</ul>

<ul>
<li>Name: <span data-bind="text: name"></span></li>
<li>Number: <span data-bind="text: number"></span></li>
</ul>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

似乎没关系我使用哪个applyBindings解决方案它们都一样.

因此绑定最终有效,但仅适用于IE和Firefox,但不适用于Chrome.此外,观察结果根本不起作用.我无法通过写入输入字段来更新字段.

小智 10

输入标记应绑定为值而不是文本

例如

Name:<input data-bind="value: name"></input>
Run Code Online (Sandbox Code Playgroud)


ber*_*ghe 9

必须在html完全加载后执行applyBindings.通常,我从jquery.ready方法调用它,但我想如果你把包含applyBindings的脚本块放在需要绑定的html标签之后它也会起作用.