0

团队,

我有一个非常简单的 html 页面,其视图模型如下。

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <script src='E:\Trials\ClientSide\MyTrials\knockout-2.2.1.js' type='text/javascript'></script>
    <script src='E:\Trials\ClientSide\MyTrials\jquery-2.0.0.js' type='text/javascript'></script>
    <title>Index</title>
    <script type="text/javascript">

        function PersonViewModel()
        {
            firstName = ko.observable("FirstN")
        };

        $(document).ready(function () {
            var person = new PersonViewModel();
            ko.applyBindings(person);
        });

    </script>
</head>
<body>
    <div>
        <h3>Details</h3>
        <p>First Name: <input data-bind="value:  firstName()" /></p>
        <p>First Name From span: <span data-bind="text: firstName()" ></span> </p>
    </div>
</body>
</html>

它非常简单且不言自明。脚本块包含一个视图模型,并且在 doc ready 函数上,发生绑定。而且html也很简单。一个输入和一个跨度绑定到同一个属性 firstName,这是可观察的。但痛苦是当我从输入中更改值时,跨度不会更新。我错过了什么?问候维韦克

4

2 回答 2

7

更改firstName()firstName

<p>First Name: <input data-bind="value:  firstName" /></p>
<p>First Name From span: <span data-bind="text: firstName" ></span> </p>
于 2013-05-21T16:27:18.553 回答
4

这里有两个问题。

  1. 正如 Caludio 所提到的,您在不需要时将括号放入绑定中。有关如何解决此问题,请参阅他的答案。
  2. 您的 PersonViewModel 略有错误。您忘记放置“this”。在 firstName 属性前面。像这样修复它:

    function PersonViewModel()
    {
        this.firstName = ko.observable("FirstN");
    };
    
于 2013-05-21T21:45:12.377 回答