Knockout.js:单选按钮的第一次单击在3.0中不显示,在2.1-2.3中显示

肯·蒂格

小提琴:http : //jsfiddle.net/pr5YQ/7/

我遇到了Knockout.js相对常见的问题-每当第一次选择单选按钮时,对象模型中的值就会更新,但是单选按钮本身不会显示选择。在第二次选择时,该项目显示支票。

有趣的是,淘汰赛版本2可以正常运行!只有淘汰赛版本3才有问题。在小提琴中,切换到任何版本的Knockout 2,然后该表格即可根据需要运行。

我检查了我设置为值的数据类型是否存在任何问题(它们都是数字,应该没问题),并且名称/值设置似乎正确。我希望,如果我未能完成上述任何一个操作,则第一次单击失败将显示在所有版本的Knockout中。

这是我拥有的数据模型的一个片段:

        "Question_Ref": 1,
            "Question_Text": "Question 1",
            "Response_Ref": -1,
            "Response_Text": "",
            "Selected_Answer_Ref": -1,
            "Answers": [{
            "Answer_Ref": 1,
                "Answer_Text": "Yes",
                "Answer_Fails": false
        }, {
            "Answer_Ref": 2,
                "Answer_Text": "No",
                "Answer_Fails": false
        }]

这就是我获取数据对象本身并附加必要的KO绑定的方法:

function AttachKOObjectsOnQuestion(question) {
    question.Selected_Answer_Ref_KO = ko.observable(question.Selected_Answer_Ref);
    question.Show_Response_KO = ko.computed({
        read: function () {
            if (!question.Selected_Answer_Ref_KO()) return null;
            if (question.Selected_Answer_Ref_KO() < 0) return null;
            for (selAnswerCount = 0; selAnswerCount < this.Answers.length; selAnswerCount++) {
                var answer = this.Answers[selAnswerCount];
                if (answer.Answer_Ref === this.Selected_Answer_Ref_KO()) {
                    return answer.Answer_Fails;
                }
            }
            return null
        },
        write: function (value) {},
        owner: question
    });
    var answerCount;
    for (answerCount = 0; answerCount < question.Answers.length; answerCount++) {
        AttachKOObjectsOnQuestionAnswer(question, question.Answers[answerCount]);
    }
}

function AttachKOObjectsOnQuestionAnswer(question, answer) {
    answer.ParentQuestion = question;
    answer.Selected_Answer_Ref_KO = ko.computed({
        read: function () {
            return answer.ParentQuestion.Selected_Answer_Ref_KO();
        },
        write: function (value) {
            var selectedAnswer = parseInt(value, 10);
            answer.ParentQuestion.Selected_Answer_Ref_KO(selectedAnswer);
        },
        owner: answer
    });
}

这是单选按钮的相关设置:

<table cellpadding="0" cellspacing="0">
    <tbody data-bind="foreach: Answers">
        <tr>
            <td>
                <input type="radio" data-bind="attr: { value: Answer_Ref, name: ParentQuestion.Question_Ref }, checked: Selected_Answer_Ref_KO, click: hideValidators" />
            </td>
            <td>
                <span data-bind="text: Answer_Text"></span>
            </td>
        </tr>
    </tbody>
</table>

这是我第一次使用Knockout和JSON,因此请随时提出批评。谢谢!

肯·蒂格

亚当·拉基斯(Adam Rackis)在Facebook上回答这个问题

淘汰赛3使用严格的比较,并且我还没有意识到输入值中的任何内容都是字符串。结果,单选按钮的值(字符串)从未与我的数据模型的值(数字)匹配。

更糟糕的是,我错过了文档提到您可以使用checkedValue绑定来设置非字符串值的问题。这是解决我的问题的正确方法,因为我希望数据模型的当前类型保留数字。

<input type="radio" data-bind="attr: { name: ParentQuestion.Question_Ref }, checkedValue : Answer_Ref, checked: Selected_Answer_Ref_KO, click: hideValidators" />

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Knockout.js:单选按钮的第一次单击在3.0中不显示,在2.1-2.3中显示

来自分类Dev

为什么“发出”仅在我第一次单击按钮时不显示名称?

来自分类Dev

如何:第一次单击动画1,第二次单击动画2

来自分类Dev

单击按钮时显示 2 个组件中的 1 个

来自分类Dev

第一次在iPad中单击按钮无法正常工作

来自分类Dev

Knockout.js 在单击按钮时从 viewmodel1 更改 viewmodel2

来自分类Dev

如何在Kotlin协程中显示“ @ coroutine#2”,“ @ coroutine#3”,“ @ coroutine#1”?

来自分类Dev

如何使用mysql从3个表中显示2个值和1个值

来自分类Dev

MySQL SELECT仅显示1个结果,而不显示3个表中的多个结果

来自分类Dev

MySQL SELECT仅显示1个结果,而不显示3个表中的多个结果

来自分类Dev

根据单选按钮显示不同的<tr>(在Knockout中)

来自分类Dev

如果在表1中存在,则显示表2,否则在SQL中为表3记录显示表1

来自分类Dev

将其关闭后,第一次单击时不显示弹出窗口

来自分类Dev

第一次单击时打印图像不显示图像

来自分类Dev

第一次单击后,vb 应用程序中的按钮在循环中每 x 次按自身

来自分类Dev

iOS中的Paypal集成第一次不显示登录窗口吗?

来自分类Dev

在Winforms Gridview Devexpress中的RepositoryLookupEdit中引发的第一次事件中,不显示显示成员吗?

来自分类Dev

Grep:以string1开头,以string2的第一次出现结束

来自分类Dev

UITableViewCells第一次不显示

来自分类Dev

UITableView第一次滚动时不显示

来自分类Dev

如何在python中的多个文本文件中显示输出,例如:在1.txt,2.txt,3.txt中打印从1到10的数字

来自分类Dev

如何在JSP中以格式而不是[x1,x2,x3]显示列表的值?

来自分类Dev

时间戳组到月份的数据(例如1月,2月,3月),并显示为Highcharts中月份的总数

来自分类Dev

时间戳组到月份的数据(例如1月,2月,3月),并显示为Highcharts中月份的总计数

来自分类Dev

SQL Server 2000 中第一次出现前 2 条记录等

来自分类Dev

jQuery菜单第一次单击以显示再次单击以隐藏菜单

来自分类Dev

jQuery菜单第一次单击以显示再次单击以隐藏菜单

来自分类Dev

Cocos2D 3.x一次仅在场景中显示一个精灵

来自分类Dev

第一次用户输入后,函数中的行长默认为1,为什么?

Related 相关文章

  1. 1

    Knockout.js:单选按钮的第一次单击在3.0中不显示,在2.1-2.3中显示

  2. 2

    为什么“发出”仅在我第一次单击按钮时不显示名称?

  3. 3

    如何:第一次单击动画1,第二次单击动画2

  4. 4

    单击按钮时显示 2 个组件中的 1 个

  5. 5

    第一次在iPad中单击按钮无法正常工作

  6. 6

    Knockout.js 在单击按钮时从 viewmodel1 更改 viewmodel2

  7. 7

    如何在Kotlin协程中显示“ @ coroutine#2”,“ @ coroutine#3”,“ @ coroutine#1”?

  8. 8

    如何使用mysql从3个表中显示2个值和1个值

  9. 9

    MySQL SELECT仅显示1个结果,而不显示3个表中的多个结果

  10. 10

    MySQL SELECT仅显示1个结果,而不显示3个表中的多个结果

  11. 11

    根据单选按钮显示不同的<tr>(在Knockout中)

  12. 12

    如果在表1中存在,则显示表2,否则在SQL中为表3记录显示表1

  13. 13

    将其关闭后,第一次单击时不显示弹出窗口

  14. 14

    第一次单击时打印图像不显示图像

  15. 15

    第一次单击后,vb 应用程序中的按钮在循环中每 x 次按自身

  16. 16

    iOS中的Paypal集成第一次不显示登录窗口吗?

  17. 17

    在Winforms Gridview Devexpress中的RepositoryLookupEdit中引发的第一次事件中,不显示显示成员吗?

  18. 18

    Grep:以string1开头,以string2的第一次出现结束

  19. 19

    UITableViewCells第一次不显示

  20. 20

    UITableView第一次滚动时不显示

  21. 21

    如何在python中的多个文本文件中显示输出,例如:在1.txt,2.txt,3.txt中打印从1到10的数字

  22. 22

    如何在JSP中以格式而不是[x1,x2,x3]显示列表的值?

  23. 23

    时间戳组到月份的数据(例如1月,2月,3月),并显示为Highcharts中月份的总数

  24. 24

    时间戳组到月份的数据(例如1月,2月,3月),并显示为Highcharts中月份的总计数

  25. 25

    SQL Server 2000 中第一次出现前 2 条记录等

  26. 26

    jQuery菜单第一次单击以显示再次单击以隐藏菜单

  27. 27

    jQuery菜单第一次单击以显示再次单击以隐藏菜单

  28. 28

    Cocos2D 3.x一次仅在场景中显示一个精灵

  29. 29

    第一次用户输入后,函数中的行长默认为1,为什么?

热门标签

归档