gpt4 book ai didi

javascript - 通过 $parent 绑定(bind)绑定(bind)单选按钮

转载 作者:行者123 更新时间:2023-11-28 09:54:27 26 4
gpt4 key购买 nike

我正在 foreach 循环中生成单选按钮。我试图将选中的属性绑定(bind)到父级中的基本可观察值。不幸的是,当单击单选按钮时,父级的属性似乎没有在单击处理程序中更新。

基于一些previous work ,似乎单击处理程序应该是获取 View 模型上更新值的可接受位置。最奇怪的是,似乎在您单击单选按钮几次后,正确的值开始出现。

Full Fiddle

代码:

function Question() {
this.name = "My Question";

this.answers = ko.observableArray([
new Answer(1, "Answer 1", false),
new Answer(2, "Answer 2", true),
new Answer(3, "Answer 3", false)]);

this.correctAnswer = ko.observable(2);
}

function Answer(id, name, isRight) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.isRight = ko.observable(isRight);
}

ko.applyBindings(new Question());

$(document).on("click", "input[type='radio']", function () {
var answer = ko.dataFor(this);
var question = ko.contextFor(this).$parent;

var answerId = answer.id();
var correctAnswer = question.correctAnswer();

alert(answerId + " should equal " + correctAnswer +
(answerId === correctAnswer ? " SWEET" : " DAMNIT"));
});

HTML

<div data-bind="text:name"></div>
<div data-bind="foreach:answers">
<label>
<span data-bind="text: name"></span>
<input type="radio" name="X" data-bind="value: id, checked:$parent.correctAnswer" />
</label>
<br />
</div>​

最佳答案

当您将选中的值绑定(bind)到 $parent. CorrectAnswer 时,这是一种双向绑定(bind),这意味着您可以将正确答案更新为您单击的任何内容。

我建议将其替换为以下内容:

checked:$parent.isCorrectAnswer()

这是一个 ko.compulated,它总是返回正确的答案,而且还可以在所选值发生变化时提醒您

this.isCorrectAnswer= ko.computed(function () {        
alert('your message');
return 2;//return correct answer
});

代码未经测试,仅供您使用:)

关于javascript - 通过 $parent 绑定(bind)绑定(bind)单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10291093/

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