2014-08-29 5 views
0

관찰 가능 항목으로 성 및 이름이 있으며 사용자 이름이 계산됩니다. 사용자 이름을 너무 쉽게 관찰 할 수 있습니까?KnockoutJS에서도 관찰 가능하게 계산할 수 있습니다.

+0

계산은 이미 관찰. 정확히 무엇을하고 싶습니까? –

+0

나는 성과 이름을 기반으로 사용자 이름을 계산 중입니다. 텍스트 상자에 바인딩 된 데이터입니다. 텍스트 상자를 편집해도 계산 된 항목이 업데이트되지 않습니다. – Sabby62

+0

녹아웃은 가치를 취하고 그것을 구성하는 변수로 나누는 방법을 알아야합니다. 이를 위해 하나의 입력 값에서 많은 관찰 가능한 값으로 변환하는 방법을 설명하는'write' 함수가 필요합니다. 데모로 내 답변의 업데이트를 확인하십시오. –

답변

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

빠른 작동 예제에 감사드립니다. 정말 감사합니다. 문제는 사용자 이름을 변경하면 다른 관찰 가능 항목을 업데이트하지 않아야한다는 것입니다. 짧게 - 계산을 변경하면 관찰 가능한 다른 값에 영향을 미치지 않습니다. 예 : 두 개의 텍스트 상자 데이터가 동일한 계산에 바인딩됩니다. 한 텍스트 상자의 값을 업데이트하여 다른 텍스트 상자의 값을 업데이트해야합니다. – Sabby62

+0

그런 경우 별도의 변수를 업데이트하고 읽을 때 정의되지 않았는지 확인할 수 있습니다. 이런 식으로 : http://jsfiddle.net/xxkLs0p8/2/ –

+0

그것은 작동하지 않습니다 http://jsfiddle.net/xxkLs0p8/3/ – Sabby62