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