2014-08-29 80 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

相關問題