2014-04-15 2 views
1

나는 녹아웃에 새로 왔고 여전히 내 머리를 얻었고 두 가지 KO 변수를 사용하여 간단한 수학 (덧셈 및 곱셈)을 수행하는 방법에 대해 궁금합니다. 분에서 KnockoutJS 수학

나는이 :

가 반환 위대한이며 출력한다
self.popInc1 = ko.observable('0.3'); 
self.popIncrease = ko.computed(function() { 
    return self.popInc1() + " x " + self.population(); 
}); 

"0.3 × 54556239"

내가 함께 두 개의 변수를 곱 싶습니다 그러나

. 나는 성공을 위해 다음을 시도했다.

분에 0.3은 정적이지만 결국 텍스트 입력에서 동적입니다.

답변

1

어때? http://jsfiddle.net/barryman9000/UNaUk/2/

<div data-bind="text: popIncrease"></div> 
<input type="text" data-bind="value: userInput, valueUpdate: 'afterkeydown'" /> 


var ViewModel = function(){ 
    var _self = this; 
    _self.userInput = ko.observable(0.3); 
    _self.population = ko.observable(54556239); 

    _self.popIncrease = ko.computed(function() { 
     return Math.floor(_self.userInput() * _self.population()); 
    }); 
}; 

UPDATE 는 당신이 문제를 해결하지만이 다른 바이올린을 포함 거라고 생각을 참조하십시오. 그것은 당신이 배열에서 그 값을 얻기 위해 사용하는 어떤 함수에서 다음 초기화 때 당신은 당신이 관찰을 업데이트 할 수 있습니다, 당신의 _self.population() 관찰에 0을 제공 할 수 있습니다 귀하의 계산은 잘 http://jsfiddle.net/barryman9000/UNaUk/3/

_self.population = ko.observable(0); 
+0

Population을 고정 값으로 정의하면 작동하지만, 동적이고 사전에 앱에서 미리 정의됩니다. 숫자는 배열에서 가져오고 사용 된 수는 다른 옵션에 따라 다릅니다. 다시 말해, self.population = ko.observable (123)을 입력하면 123을 제거하면 NaN이 표시됩니다. – leaksterrr

+0

self.population은 올바른 값 (보기)을 출력하기 때문에 정확해야합니다. – leaksterrr

+0

NaN 값은 _self.userInput 및 _self.population이 초기화되지 않았기 때문입니다. 값이 정의되어 있지 않다면 간단한 체크를 할 수 있고, 그 다음에 0을 돌려 준다. 그렇지 않으면 계산을한다. – Mariatta

1

작동합니다 고정 시켰습니다. 배열에서 가져온 원래 값은 숫자가 아닌 문자열입니다. facepalm.