我正在使用敲门.js。我创建了一个视图模型,说testViewModel仅具有1个可观察的属性testProperty

function testViewModel()
{
  var self = this;

  self.testProperty = ko.observable("Initial");

}


比我创建了一个span,其中反映了testProperty的更改后的值,以及一个input text field,通过该值我们可以更改testProperty的值。

 <span data-bind="text: testProperty"></span><br />
 <input type="text" data-bind="value: testProperty" />


我创建了一个Example Fiddle。当在输入文本字段上执行聚焦事件时,似乎可观察的属性值会更新。

现在我的问题是,我们可以将可观察属性值更新事件从焦点更改为其他内容吗?我也创建了一个保存按钮。是否只有通过按保存按钮才能更新可观察属性值。

我正在尝试创建一个应用程序,用户可以在其中创建和保存其概要文件,并可以编辑保存的概要文件。我在创建和编辑表单中使用相同的可观察属性,并且这些属性是可观察的。因此,当用户编辑其个人资料时,用户界面不应
直到用户按下保存按钮进行更新。这是我的目标。请帮我解决这个问题?

最佳答案

我建议使用testProperty和testProperty_temp。将输入绑定到temp,然后单击按钮,将testProperty设置为testProperty_temp

function testViewModel()
{
   var self = this;

   self.testProperty = ko.observable("Initial");
   self.testProperty_temp = ko.obserable("");
   self.save = function() { self.testProperty(self.testProperty_temp()); }
 }


希望这可以帮助

07-28 11:36