구독 함수 내부에서 관측 가능한 값을 어떻게 바꿀 수 있습니까? 구독 함수 내에서 관찰 가능 값을 어떻게 변경할 수 있습니까?
JS 모델 예를 들어
:function Model(){
self = this;
self.Test = ko.observable(2);
self.Test.subscribe(function(){
if (/**Some bool expression**/) {
self.Test(2);
}
});
}
HTML 기본적 초 전파 입력에 의한
<input type="radio" value="1" data-bind="checked:Test" />
<input type="radio" value="2" data-bind="checked:Test" />
<input type="radio" value="3" data-bind="checked:Test" />
체크한다. 첫 번째 라디오를 클릭하면 첫 번째와 두 번째 라디오가 모두 선택됩니다.
업데이트 : 내가 jQuery를 녹아웃를 모두 포함 할 때 그것은이 발생합니다. jquery를 제거하면 모두 Ok입니다. 하지만 테스트 페이지 일뿐입니다. 실제 프로젝트에서는 jQuery를 일부 장소에서 사용해야하며,이 경우 제거 할 수 없습니다.
Sample. 테스트 페이지의 출처 : 구독/출판 뒤에
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="knockout-2.1.0.js"></script>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript">
function Model(){
self = this;
self.Test = ko.observable(2);
self.Test.subscribe(function(){
if (true) {
self.Test(2);
}
});
}
</script>
</head>
<body>
<input type="radio" value="1" data-bind="checked:Test" />
<input type="radio" value="2" data-bind="checked:Test" />
<input type="radio" value="3" data-bind="checked:Test" />
</body>
<script type='text/javascript'>
ko.applyBindings(new Model());
</script>
</html>
아마도이 피들을 기반으로 재현 할 수 있습니다. http://jsfiddle.net/rniemeyer/2uCAF/? 바인딩으로 인해 첫 번째와 두 번째 라디오를 모두 선택할 수 없기 때문에 다른 문제가 발생할 수 있다고 생각합니다. 또한 입력 내용에 공통된 'name'속성을 지정해야합니다. KO는 이들을 계속 그룹화하여 유지합니다. –
예, 이름 특성을 추가하십시오. http://www.w3.org/TR/html401/interact/forms.html#radio – mg1075