2

我已将我的选择定义如下

<select id="selProductType" data-bind="options: productType , value: editProductType , optionsText: 'Name'" />

下面是我在视图模型中填充选择的代码

 // Loading combobox with Product Types
    $.getJSON("../RestService/Product/AllProductTypes",
      function (allData) {
          var mappedProductType = $.map(allData, function (item) {
              console.log(item.Id + ' ' + item.Name);
              return new productType(item);
          });
          self.productType(mappedProductType);

      });

当我初始化页面时,我想设置默认值来选择。所以我在下面尝试

self.editProductType(4);

但它给了我 TypeError 说对象 4 没有方法 ID。

如何去做。我也在stackoverflow中经历过类似的帖子,但没有运气。

Knockout JS绑定下拉(选择)列表的初始/默认值

4

1 回答 1

2

如果您不指定:

optionsValue: 'Id'

在 data-bind 中,这种情况下的绑定值必须是 productType 数组中的一个对象。

您可以选择默认对象:

self.editProductType(self.productType()[2]);

什么是期权价值?

与 optionsText 类似,您还可以传递一个名为 optionsValue 的附加参数,以指定应使用对象的哪些属性来设置 KO 生成的元素的 value 属性。您还可以指定一个 JavaScript 函数来确定该值。此函数将接收所选项目作为其唯一参数,并应返回一个字符串以用于元素的 value 属性。

通常,您只想使用 optionsValue 来确保 KO 在更新可用选项集时可以正确保留选择。例如,如果您通过 Ajax 调用反复获取“汽车”对象列表并希望确保保留所选汽车,您可能需要将 optionsValue 设置为“carId”或每个“汽车”对象具有的任何唯一标识符, 否则 KO 不一定知道之前的“汽车”对象中的哪些对应于新对象中的哪些。

阅读更多: http: //knockoutjs.com/documentation/options-binding.html

于 2013-01-10T11:48:43.347 回答