【问题标题】:With Knockout, How to display item name from a list by id?使用 Knockout,如何按 id 从列表中显示项目名称?
【发布时间】:2014-03-22 04:54:46
【问题描述】:

当我显示下拉菜单时,我可以进行选择并让用户选择。如下所示

<select data-bind="options : $parent.items, optionsText :'name', optionsValue:'id', value : status"></select>

但是我想从项目 ID 中显示项目名称呢?

谢谢

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    不确定我是否理解了这个问题,请检查这是否是您想要的:

    <select width="50" data-bind="foreach: items">
       <option data-bind="value: id, text:name, attr: {name: id}"></option>
    </select>
    

    http://jsfiddle.net/david_freire/3P8m4/

    【讨论】:

    • 谢谢,我只想显示列表中的值。例如,现在有一个 colorid color 1 Red 2 Green 3 Yellow 的列表,我有一个 colorid 字段,它的值为 2,我需要显示 Green
    【解决方案2】:

    3 个选项(我更喜欢 #2):

    (1) 设置 optionsValue: 'name' 而不是 id。根据您对问题的描述,这是一个有效的解决方案,但我敢打赌这不是您想要的。

    小提琴:http://jsfiddle.net/simonlevasseur/3DYh4/

    <select data-bind="options : items, optionsText: 'name', optionsValue: 'name', value : status"></select>
    <span data-bind="text: status"></span>
    


    (2) 从绑定中删除 optionsValue,这样您就可以保存整个对象,而不仅仅是保存 id。

    小提琴:http://jsfiddle.net/simonlevasseur/nCNXJ/

    <select data-bind="options : items, optionsText: 'name', value : status"></select>
    <span data-bind="text: status().name"></span>
    


    (3) 在列表中搜索与 id 匹配的项目。

    小提琴:http://jsfiddle.net/simonlevasseur/aW23N/

    var color = ko.utils.arrayFirst(colors, function (color) {
        return color.id === status;
    });
    

    【讨论】:

    • 谢谢!好像需要第三种方式,它是网格中的一个字段,所以使用第一种和第二种方式性能不好。
    猜你喜欢
    • 2014-12-17
    • 2017-05-01
    • 2020-06-30
    • 2018-07-19
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多