2011-12-12 3 views
2

knockout.js에서 작동하는 간단한 dependentObservable 체인을 가져 오는 데 문제가 있습니다. (가) "당신은 여전히 ​​노력하고 있습니다"라디오가 체크는 didYouQuitVisible dependentObservable 업데이트하거나 불 것으로 보인다 결코 할 때마다knockout.js 의존 관찰 가능 체인이 작동하지 않음

var viewModel = { 
    didWork: ko.observable(''), 
    stillWorking: ko.observable(''), 
    didYouQuit: ko.observable('') 
}; 

viewModel.stillWorkingVisible = ko.dependentObservable(function() { 
    return this.didWork() == 'Yes'; 
}, viewModel); 

viewModel.didYouQuitVisible = ko.dependentObservable(function() { 
    alert('ok'); 
    return this.stillWorkingVisible() == 'Yes' && this.stillWorking() == 'No'; 
}, viewModel); 

ko.applyBindings(viewModel); 

<ul> 
    <li>Did you do any work?<br /> 
     <input type="radio" name="didWork" value="No" data-bind="checked: didWork" />&nbsp;No 
     <input type="radio" name="didWork" value="Yes" data-bind="checked: didWork" />&nbsp;Yes 
    </li> 
    <li data-bind="visible: stillWorkingVisible">Are you still working?<br /> 
     <input type="radio" name="stillWorking" value="No" data-bind="checked: stillWorking" />&nbsp;No 
     <input type="radio" name="stillWorking" value="Yes" data-bind="checked: stillWorking" />&nbsp;Yes 
    </li> 
    <li data-bind="visible: didYouQuitVisible">Did you quit?<br /> 
     <input type="radio" name="didYouQuit" value="No" data-bind="checked: didYouQuit" />&nbsp;No 
     <input type="radio" name="didYouQuit" value="Yes" data-bind="checked: didYouQuit" />&nbsp;Yes 
    </li> 
</ul> 

: 여기 내 코드입니다. 나는 거기에 경고()를 가지고 있으며, "당신은 아직도 일하고 ​​있습니까?"라디오가 체크/체크되지 않을 때마다 결코 경고가 나타나지 않습니다. 그러나 첫 라디오 그룹이 선택/선택 해제되면 경고가 표시됩니다. 첫 번째 dependentObservable (stillWorkingVisible)은 정상적으로 작동합니다. 아이디어?

+1

매우 흥미로운 부울을 반환합니다. 왜 이것이 작동하지 않는지 모르겠다. 나는 코드의 JS 피들을 여기에 만들었다 : http://jsfiddle.net/xYqKP/ – jmacinnes

답변

3

코드는이 주장에 잘못된 것 같다 :

return this.stillWorkingVisible() == 'Yes' 

stillWorkingVisible() 문자열 '예'만 bool을 반환하지 않을 것입니다.

편집

fiddle은 수정 예상대로 작동하는 것 같다.

+0

gah! 그것을 잡아 주셔서 감사합니다. – kindohm

관련 문제