2014-08-29 78 views
0

我的名字和姓氏是可观察的,用户名被计算出来。是否有可能使用户名可观察?在KnockoutJS中计算也可以是可观察的

+0

一个计算已可观察到的。你想要做什么? – 2014-08-29 17:48:27

+0

好吧我正在计算基于名字和姓氏的用户名。这是绑定到文本框的数据。 如果我编辑文本框,它不会更新计算。 – Sabby62 2014-08-29 17:56:20

+0

淘汰赛需要知道如何获取价值并将其分成由它组成的变量。为此,您需要有一个'write'函数来描述如何从一个输入值转换为多个可观察值。通过演示查看我的答案更新。 – 2014-08-29 18:10:29

回答

2

Knockout中计算出的已经是可观察类型。如果你想要做的是设置一个计算值,那么你可以使用readwrite属性来完成。

这里的设置姓和名的一种非常原始的例子:

var fn = ko.observable("Jimbo"); 
var ln = ko.observable("Jangles"); 

var vm = { 
    myComputed : ko.computed({ 
     read: function() { return fn() + " " + ln(); }, 
     write: function (value) { 
      var pieces = value.split(" "); 
      fn(pieces[0]); 
      ln(pieces[pieces.length -1]); 
     } 
    }) 
}; 

这里有一个工作示例:http://jsfiddle.net/xxkLs0p8/

+0

感谢您的快速工作示例。非常感谢。事情是改变用户名不应该更新其他observable。简言之 - 改变计算结果不应该影响其他观察值的值。例如绑定到相同的两个文本框数据计算。更新一个文本框中的值应该更新另一个文本框中的值。 – Sabby62 2014-08-29 18:20:18

+0

在这种情况下,您可以更新一个单独的变量并检查它是否在读取中未定义。像这样:http://jsfiddle.net/xxkLs0p8/2/ – 2014-08-29 18:24:39

+0

它不工作http://jsfiddle.net/xxkLs0p8/3/ – Sabby62 2014-08-29 18:29:39

相关问题