我如何更改subscribe函數內可觀察值的值? 例如我如何更改subscribe函數內可觀察值的值?
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然後一切正常。 但它只是測試頁面。在真實的項目中,我需要在某些地方使用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