从选择下拉列表中将值和文本绑定到对象模型

时间:2013-09-05 20:40:05

标签: javascript jquery knockout.js

我正在尝试访问选择列表中的值和文本,以便我可以存储值以在我的应用程序的另一部分中显示用户选择。

我有一个没有任何问题的绑定到对象的值,但我想知道是否可以访问text属性并将其绑定到我的对象。

我正在动态构建我对数据库中json对象下拉列表的答案,该对象呈现表单的问题(可以是1或多个)。

我对问题的约束如下:

<div data-bind="text: QuestionText" class="caf-question sub-unit-1-bottom"></div>
                <select class="inline" data-bind="value: SelectedComparisonOperator">
                    <option value="0">Equal to</option>
                    <option value="1">Not equal to</option>
                </select>
                <select data-bind="foreach: Answers, visible: Answers.length > 0, value: SelectedAnswerOption" class="caf-answers">
                    <option class="caf-answer" data-bind="text: AnswerText, value: AnswerId, css: {'caf-header': IsHeader == true}"></option>
                </select>

当我将这些项目推到淘汰赛环境中时,我会填充以下内容:

QuestionId: 2
QuestionText: "Site"
SelectedAnswerOption: 23
SelectedAnswerOptionText: null
SelectedComparisonOperator: "0"

使用以下命令将值推入对象:

var clinicalAnswerItem = {
                        QuestionId: item.QuestionId,
                        QuestionText: item.QuestionText,
                        SelectedAnswerOption: item.SelectedAnswerOption,
                        SelectedAnswerOptionText: "Need to populate this somehow",
                        SelectedComparisonOperator: parseInt(item.SelectedComparisonOperator)
                    }

                    viewModel.clinicalAnswers.push(clinicalAnswerItem);

理想情况下,我只想从select选项中获取文本并将其推送到knockout上下文中。这可能吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

如果您将选项绑定到一个对象数组,则可以使用所选对象填充value,您可以访问它的文本/值,如:

this.myOptions = [
  { value: 0, text: "zero" },
  { value: 1, text: "one" }
];

然后绑定:

<select data-bind="options: myOptions, optionsText: 'text', value: mySelection"></select>

现在,mySelection将填充一个对象,您可以访问valuetext属性。