【问题标题】:Complex table with dropdowns using Knockout使用 Knockout 的带有下拉列表的复杂表
【发布时间】:2014-05-23 08:05:08
【问题描述】:

我正在构建一个表单以允许用户更改数据库中已经存在的配置。

示例数据:

ProcessorColumnName OutboundColumnName  CatalogColumnId
Active              Active              2
Category            Category            3
Inventory           Inventory           4
Manufacturer        Manufacturer        5
ManufacturerSKU     ManufacturerSKU     6

淘汰模型:

function CatalogConfigurationModel(data) {
        var self = this;
        self.processorColumnName = ko.observable(data.ProcessorColumnName);
        self.outboundColumnName = ko.observable(data.OutboundColumnName);
        self.catalogColumnId = ko.observable(data.CatalogColumnId);
        self.currentlyConfigured = ko.observable(data.OutboundColumnName);
    }

这里的processorColumnName和currentConfigured作为键值对。

表:

<table class="table table-bordered table-striped">
                    <tbody data-bind="foreach: catalogConfiguration">
                        <tr class="h4">
                            <td data-bind="text: processorColumnName"></td>
                            <td><select data-bind="options: $root.catalogConfiguration,
                            optionsText: 'outboundColumnName',
                            optionValue: 'catalogColumnId',
                            value: currentlyConfigured"></select></td>
                        </tr>
                    </tbody>
                </table>

这样做的目的是构建一个处理器列列表,并提供一个下拉列表来为该列选择一个新值。我想让当前配置的值成为默认值,但我不确定如何从下拉列表中引用外部 foreach 值。当用户第一次加载页面时,OutboundColumnName 列应该是下拉菜单的默认值。

我将着手模拟一些数据以将小提琴放在一起。

无法让小提琴工作,因为我正在使用回调,所以我只想使用返回的字符串...这是链接,但我无法将变量放在顶部以映射到我的模型,这在我的程序中有效。 http://jsfiddle.net/LkqTU/15888/

【问题讨论】:

  • @PWKad 在获取我抓取的字符串以映射到我的模型时遇到问题,更新了我的帖子,但仍在努力让小提琴工作
  • 试试这个小提琴:jsfiddle.net/LkqTU/15897

标签: knockout.js


【解决方案1】:

2 个问题...

1.您在选择的绑定中有错字。它应该是 optionsValue,而不是 optionValue。

2.值绑定中使用的可观察对象应该有一个与“optionsValue”字段中存储的值相同的支持值。你的情况

self.catalogColumnId = ko.observable(data.CatalogColumnId);
self.currentlyConfigured = ko.observable(data.CatalogColumnId);

【讨论】:

  • 感谢拼写错误导致了问题,默认值字段应该与选项中的值一致。
猜你喜欢
  • 2014-08-07
  • 2010-12-02
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2015-10-25
  • 2018-08-30
  • 2013-04-07
  • 2015-12-12
相关资源
最近更新 更多