选择的选项ID和值

时间:2013-05-07 11:50:24

标签: knockout.js

通常情况下,当我有一个选择列表时,我将它与敲除绑定如下:

<select
    data-bind="
        options: data,
        optionsText: 'Name',
        optionsValue: 'Id',
        optionsCaption: 'Select ...',
        value: dataSelectedId" ></select>

但这种绑定存在问题:您没有选定的对象。你有它的ID。 如何合并这两个要求:是否绑定了项目的ID和项目本身?

现在我使用computed observable来获取所选项目,通常如下所示:

self.dataSelectedCO = ko.computed(function() {
    for (var i = 0; i < self.data().length; ++i)
        if (self.data()[i].Id() == self.dataSelectedId())
            return self.data()[i];
});

我尝试使用自定义函数来包装值getter,但是当选择更改时会调用每个元素,因此使用此方法没有任何好处。 Here是一个小伙伴。

1 个答案:

答案 0 :(得分:7)

删除optionsValue参数。然后,所选值将是“所选项目”。而不是Id

更新的代码将是:

<select
    data-bind="
    options: data,
    optionsText: 'Name',
    optionsCaption: 'Select ...',
    value: dataSelectedItem" ></select>

dataSelectedItem现在将拥有所选项目。

一旦你有了这个项目。您可以从对象本身获取Id,例如dataSelectedItem().Id