Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockout.js observable未更新_Javascript_Jquery_Html_Knockout.js_Observable - Fatal编程技术网

Javascript knockout.js observable未更新

Javascript knockout.js observable未更新,javascript,jquery,html,knockout.js,observable,Javascript,Jquery,Html,Knockout.js,Observable,团队 我有一个非常简单的html页面,其中有一个viewmodel,如下所示。 @{ 布局=空; } 指数 函数PersonViewModel() { firstName=ko.可观察(“FirstN”) }; $(文档).ready(函数(){ var person=新PersonViewModel(); ko.应用绑定(个人); }); 细节 名字: span中的名字: 这很简单,不言自明。脚本块包含一个视图模型,在docready函数上,会发生绑定。html也很简单。一个输入和一个范围

团队

我有一个非常简单的html页面,其中有一个viewmodel,如下所示。
@{
布局=空;
}
指数
函数PersonViewModel()
{
firstName=ko.可观察(“FirstN”)
};
$(文档).ready(函数(){
var person=新PersonViewModel();
ko.应用绑定(个人);
});
细节
名字:

span中的名字:


这很简单,不言自明。脚本块包含一个视图模型,在docready函数上,会发生绑定。html也很简单。一个输入和一个范围绑定到可观察的相同属性firstName。 但痛苦的是,当我更改输入的值时,跨度不会更新。我错过了什么? 当做 Vivek

firstName()
更改为
firstName

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

span中的名字:


这里有两个问题

  • 正如Caludio所提到的,在没有必要的情况下,您可以在绑定中放置括号。关于如何解决这个问题,请参考他的答案
  • 您的PersonViewModel稍有错误。您忘记将“this.”放在firstName属性前面。像这样解决它:

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

  • 嗨,Caludio的建议奏效了。罗德尼建议加上“这个”。但我发现不需要添加。我刚刚删除了“()”,它起了作用。是的,您是对的,对于您提供的非常简单的示例,您可以不在模型属性前面添加“this”关键字。但我强烈建议你开始养成这样的习惯,否则当你的模型变得更复杂时,你会发现一些奇怪的错误。我创建了一个JSFIDLE来演示。您绝对希望在这里使用“this”,因为这实际上会使
    firstName
    成为
    personviewmodel
    的一个属性。代码仍然有效的原因是,正在全局作用域中将
    firstName
    创建为一个对象,因此敲除绑定代码仍然可以仅通过名称访问该属性,但它位于错误的作用域。连续运行了4个小时,甚至尝试了valuehasMutated函数,但这解决了它。非常感谢你,克劳迪奥
    function PersonViewModel()
    {
        this.firstName = ko.observable("FirstN");
    };