2013-05-16 4 views
1

두 가지 주요 문제점이 있습니다. 첫째, 16 번 줄에있는 괄호로 인해 오류가 발생했습니다. 둘째, 더 중요한 것은, 해당 행을 삭제하더라도 데이터 바인딩이 계산 된 속성에 대해 업데이트되지 않는다는 것입니다. 다음은 jsFiddle입니다. http://jsfiddle.net/austinfacts/Lxpgu/1/ 또는 원하는 경우 코드 만 있습니다.계산 됨 Observable이 업데이트되지 않음

내가 잘못 뭐하는 거지
<form> 
         <p> 
          Known Volume: <input id="boyle1_volume1_text" data-bind="value: volume1_text" type="text" /> 
         </p> 
         <p> 
          In: <select id="boyle1_volume1_select" data-bind="value: volume1_select"> 
            <option value="0">- Select -</option> 
            <option value="1">Liters</option> 
            <option value=".001">Milliliters</option> 
          </select> 
         </p> 
         <p> 
          Pressure Corresponding to Known Volume: <input id="boyle1_pressure1_text" data-bind="value: pressure1_text" type="text" /> 
         </p> 
         <p> 
          In: <select id="boyle1_pressure1_select" data-bind="value: pressure1_select"> 
           <option value="0">- Select -</option> 
           <option value="101.3">Atmospheres</option> 
           <option value="1">Kilopascals</option> 
          </select> 
         </p> 
         <p> 
          Known Pressure Corresponding to Unknown Volume: <input id="boyle1_pressure2_text" data-bind="value: pressure2_text" type="text" /> 
         </p> 
         <p> 
          In: <select id="boyle1_pressure2_select" data-bind="value: pressure2_select"> 
           <option value="0">- Select -</option> 
           <option value="101.3">Atmospheres</option> 
           <option value="1">Kilopascals</option> 
          </select> 
         </p> 
         <p> 
          Answer In: <select id="boyle1_volume2_select" data-bind="value: volume2_select"> 
            <option value="0">- Select -</option> 
            <option value="1">Liters</option> 
            <option value="1000">Milliliters</option> 
          </select> 
         </p> 
         <span id="boyle1_volume_result" data-bind="text: answer1"></span> 

var boyle1 = { 
volume1_text: ko.observable(parseInt(0)), 
volume1_select: ko.observable(parseInt(0)), 

pressure1_text: ko.observable(parseInt(0)), 
pressure1_select: ko.observable(parseInt(0)), 

pressure2_text: ko.observable(parseInt(0)), 
pressure2_select: ko.observable(parseInt(0)), 

volume2_select: ko.observable(parseInt(0)), 
}; 
boyle1.answer1 = ko.computed(function() { 
    return this.volume1_text() * this.volume1_select() 
    * this.pressure1_text() * this.pressure1_select() 
    /(this.pressure2_text() * pressure2_select()) 
    * this.volume2_select(); 
}, boyle1); 
ko.applyBindings(boyle1); 

? 모든 입력이 도움이 될 것입니다.

답변

1

'이것을 추가하지 않았습니다.' 압력 2_ 선택의 앞에. 여기에 고정되어 있습니다 fiddle

var boyle1 = { 
     volume1_text: ko.observable(parseInt(0)), 
     volume1_select: ko.observable(parseInt(0)), 

     pressure1_text: ko.observable(parseInt(0)), 
     pressure1_select: ko.observable(parseInt(0)), 

     pressure2_text: ko.observable(parseInt(0)), 
     pressure2_select: ko.observable(parseInt(0)), 

     volume2_select: ko.observable(parseInt(0)), 
    }; 

    boyle1.answer1 = ko.computed(function() { 
     return this.volume1_text() * this.volume1_select() 
     * this.pressure1_text() * this.pressure1_select() 
     /(this.pressure2_text() * this.pressure2_select()) 
     * this.volume2_select(); 
    }, boyle1); 

    ko.applyBindings(boyle1); 
+0

감사합니다. 나는 그처럼 어리석은 일에 너무 오래 투쟁한다. –

관련 문제