繁体   English   中英

Knockout.js没有正确设置选择选项

[英]knockout.js not setting select option properly

也许我误会了它的工作原理。 我想使用knockout.js填充选择元素选项。 我正在使用以下标记来实现此目的:

<select data-bind="options: type_options, optionsText: function(item) {
            return item.text;
        }, optionsValue: function(item) {
            return item.value;
        }, optionsCaption:'Select a type...',
        value: type">

以下是相关的模型代码:

 var myModel = {
    type: ko.observable(),

    type_options: ko.observableArray([
        {text: "String 1", value:1},
        {text: "String 2", value:2},
        {text: "String 3", value: 3},
        {text: "String 4", value: 4},
        {text: "String 5", value: 5}
    ]),
 }

现在,下拉列表可以正确呈现,并带有所有正确的文本和值,但是当我从下拉列表中选择一个选项时,它不能正确设置'type'的值。

例如,如果我选择了标记为“字符串4”的选项,然后在浏览器中运行以下命令:

myModel.type()

我希望它返回值“ 4”。 相反,我得到对象的整个对象:

Object
     text: "String 4"
     value: 4
     __proto__: Object

我的问题是如何根据选项的value属性而不是整个对象来剔除以设置type的值?

好吧,您应该能够在选项数组而不是函数中传递变量的文本。 我不知道这是引起问题的原因,但您的标记看起来会更好

<select data-bind="options: type_options, optionsText: 'text', optionsValue: 'value', optionsCaption:'Select a type...', value: type"></select>

那应该可以让您得到想要的东西,有关完整示例,请参阅小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM