使用Knockout在下拉列表中显示选定的值

时间:2013-09-09 10:08:16

标签: knockout.js

以下是我的JSON

的摘录
{
  "PreferredLanguage":"Italian",
  "PreferredLanguageDisplay":"Italiano",
   "Languages":[
     {"Selected":false,"Text":"English (UK)","Value":"0"}, 
     {"Selected":false,"Text":"English (US)","Value":"1"}, 
     {"Selected":true,"Text":"Italiano","Value":"2"}, 
     {"Selected":false,"Text":"Français","Value":"3"}
   ]
}

现在,我将Knockout中的下拉列表绑定到Languages因此:

<div class="item">
    <select data-bind="foreach: Languages(), value: PreferredLanguage">
        <option data-bind="text: Text"></option>
    </select>
</div>

这一切都有效,但我想再做一件事。默认情况下,所选Languages数组中的第一个值,但我希望选择其文本与PreferredLanguageDisplay匹配的选项。

我尝试使用if绑定但是不能让它工作。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您应该使用选项绑定,如下所示:

查看:

<select data-bind="options: Languages, value: PreferredLanguage, optionsText: 'Text', optionsValue : 'Value'">
</select>

查看模型:

var vm = {

    "PreferredLanguage": ko.observable('2'), // Value of Italiano
    "PreferredLanguageDisplay": "Italiano",
        "Languages": [{
        "Text": "English (UK)",
            "Value": "0"
    }, {
        "Text": "English (US)",
            "Value": "1"
    }, {
        "Text": "Italiano",
            "Value": "2"
    }, {
        "Text": "Français",
            "Value": "3"
    }],

};
ko.applyBindings(vm);

See fiddle

答案 1 :(得分:0)

扩展@Anders的建议。这是实际的文档: