【问题标题】:knockout.js observable is not updatingknockout.js observable 未更新
【发布时间】:2013-05-16 12:04:48
【问题描述】:

团队,

我有一个非常简单的 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>

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

【问题讨论】:

    标签: javascript jquery html knockout.js observable


    【解决方案1】:

    firstName() 更改为firstName

    <p>First Name: <input data-bind="value:  firstName" /></p>
    <p>First Name From span: <span data-bind="text: firstName" ></span> </p>
    

    【讨论】:

    • 连续进行了 4 个小时,甚至尝试了 valuehasMutated 函数,但这解决了它。非常感谢克劳迪奥
    【解决方案2】:

    这里有两个问题。

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

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

    【讨论】:

    • 嗨,Caludio 的建议奏效了。罗德尼建议添加“这个”。但我发现它不需要添加。我刚刚删除了“()”并且它起作用了。
    • 是的,您是对的,对于您提供的非常简单的示例,您可以不用在模型属性前添加“this”关键字。但我强烈建议你开始养成它的习惯,否则当你的模型变得更复杂时,你会开始看到一些奇怪的错误。我创建了一个 jsfiddle jsfiddle.net/8LuF8/2 来演示。
    • 您绝对希望在这里使用“this”,因为这实际上会使firstName 成为PersionViewModel 的属性。代码仍然有效的原因是,firstName 被创建为全局范围内的对象,因此 Knockout 绑定代码仍然可以仅通过名称访问该属性,但它位于错误的范围内。
    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多