サブスクライブ関数内でオブザーバブルの値を変更するにはどうすればよいですか? 例えば
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" />
デフォルトでは、2 番目の無線入力がチェックされています。最初のラジオをクリックすると、最初と 2 番目の両方が選択されます。
更新: jQuery とノックアウトの両方を含めると発生します。jquery を削除すると、すべて問題ありません。しかし、それは単なるテストページです。実際のプロジェクトでは、いくつかの場所で jQuery を使用する必要があり、この場合は削除できません。
サンプル。テスト ページのソース:
<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>