gpt4 book ai didi

javascript - knockout 检查绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-12-01 08:13:35 25 4
gpt4 key购买 nike

我正在使用 Twitter Bootstrap 按钮组和 Knockout。我觉得我忽略了一些非常简单的事情,但是,我无法在这种情况下使 checked 绑定(bind)正常工作。

我有一个 jsFiddle 重现这里的问题:http://jsfiddle.net/n5SBa/ .

这是来自 fiddle 的代码:

HTML

<div class="form-group">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '0'), css: { active: Score() == '0' }">
<input type="radio" name="score" value="0" data-bind="checked: Score" /> 0
</label>
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '1'), css: { active: Score() == '1' }">
<input type="radio" name="score" value="1" data-bind="checked: Score" /> 1
</label>
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '2'), css: { active: Score() == '2' }">
<input type="radio" name="score" value="2" data-bind="checked: Score" /> 2
</label>
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '3'), css: { active: Score() == '3' }">
<input type="radio" name="score" value="3" data-bind="checked: Score" /> 3
</label>
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '4'), css: { active: Score() == '4' }">
<input type="radio" name="score" value="4" data-bind="checked: Score" /> 4
</label>
<label class="btn btn-primary" data-bind="click: ClickScore.bind($data, '5'), css: { active: Score() == '5' }">
<input type="radio" name="score" value="5" data-bind="checked: Score" /> 5
</label>
</div>
</div>

<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>

Javascript

function SurveyViewModel() {
var self = this;

self.Score = ko.observable();

//Events
self.ClickScore = function (score) {
self.Score(score);
};

//Computations
self.RecommendationLabel = ko.computed(function () {
if (self.Score() < 8) {
return "Some question?";
} else {
return "Some other question?";
}
});

self.DOMSelectedScore = ko.computed(function() {
if ($('input[name=score]:checked').val()) {
return $('input[name=score]:checked').val();
} else {
return 'no value!';
}
});
};

var surveyViewModel = new SurveyViewModel();

ko.applyBindings(surveyViewModel);

在示例中,我无法在 DOM 中选择实际的单选按钮,因此无法在我的表单中正确提交它。

最佳答案

复选框的值是字符串(“0”“1” 等),但您将可观察对象的值设置为数字。 checked 绑定(bind)在进行比较时使用严格相等,并且不认为数字 1 等于字符串 "1

您可以通过将可观察对象的值设置为字符串来解决此问题:

data-bind="click: ClickScore.bind($data, '1')"

http://jsfiddle.net/mbest/n5SBa/2/

关于javascript - knockout 检查绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com