【问题标题】:knockout select option not working淘汰赛选择选项不起作用
【发布时间】:2017-12-07 08:15:23
【问题描述】:

我正在开发一个从 api 获取数据的项目,我正在尝试使用 select binding 创建一个下拉列表。我已经在我的数据模型中声明了我选择的值对象 observable 对象,但是当我尝试在选择选项中使用值绑定时,它给我的值错误不是函数:

//....
    <h1 class="page-header">Kitchen</h1>
    <select data-bind="options:dataModel.options()[0]['Kitchen'], optionsText:'label', value: selectedValue">
    </select>
</div>`

这是我选择的 HTML 代码:

var dataModel = {
    selectedValue : ko.observable()
};

正如我之前所说,数据是从 json 文件中获取的。

这是 json 的样子:

"options": {
    "Kitchen": [{
        "label": "Ivory",
        "data": "001-001"
    },
    {
        "label": "Chocolate",
        "data": "001-002"
    }]
}

【问题讨论】:

    标签: javascript jquery html json knockout.js


    【解决方案1】:

    json 中的options 不是数组(数组之一是Kitchen),所以不应该是dataModel.options()['Kitchen'] 而不是dataModel.options()[0]['Kitchen']。或者你可以把dataModel.options().Kitchen 所以select 看起来像:

    <select data-bind="options:dataModel.options().Kitchen, optionsText:'label', value: selectedValue">
    </select>
    

    【讨论】:

    • 没有它的工作方式。我正在使用这种 dataModel.options()[0]['Kitchen'] 方式,因为厨房位于选项对象内。选项是可观察的数组。即使您可以帮助我获取 Options 的值,然后获取它们的特定数据,例如名称、数据,而不是硬连接它们。
    • 我不太明白这部分:“即使你可以帮助我获取选项的值,然后获取它们的特定数据,如名称、数据,而不是硬连接它们”。目标是在下拉列表中列出Kitchen's label 对吗?
    • @RishabhSharma 所以select已经在工作了,下拉列表也已经显示了正确的列表,但是当你想使用它时,选择的值会出错?
    • 我已经能够在下拉列表中选择值,但我的选择功能落后了一步。例如,如果我们选择选项 1,console.log 不会打印任何内容。但是如果我们再次选择选项 1 或任何选项,那么它会打印之前的值。
    • 我在问图像选项中有厨房、地板、公寓。我想从他们每个人那里获取价值,就像我现在为厨房做的那样。但现在我很难将淘汰赛仅连接到厨房。如果有很多选项,并且我希望每个子选项(厨房、地板、房间)等都具有价值,该怎么办?
    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2014-12-06
    • 2013-05-04
    相关资源
    最近更新 更多