Javascript 使用敲除选择默认值

Javascript 使用敲除选择默认值,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我已将我的选择定义如下 <select id="selProductType" data-bind="options: productType , value: editProductType , optionsText: 'Name'" /> 当我初始化页面时,我想将默认值设置为select。所以我在下面试了一下 self.editProductType(4); 但它给了我TypeError,说对象4没有方法Id 怎么做。我也曾在stackoverflow上读过类似的帖子,但运

我已将我的选择定义如下

<select id="selProductType" data-bind="options: productType , value: editProductType , optionsText: 'Name'" />
当我初始化页面时,我想将默认值设置为select。所以我在下面试了一下

self.editProductType(4);
但它给了我TypeError,说对象4没有方法Id

怎么做。我也曾在stackoverflow上读过类似的帖子,但运气不好


如果未指定:

optionsValue: 'Id'
在数据绑定中,本例中的绑定值必须是productType数组中的对象

您可以选择默认对象:

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

什么是选项值?

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

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


阅读更多信息:

您在选择元素中有一个额外的“我在我的数据绑定中添加了optionsValue,并按照您所说的self.editProductType(self.productType()[4])进行了写入;但我得到错误“未捕获的类型错误:无法调用未定义的“设置此self.productType为可观察数组时,必须确保self.productType为可观察数组,并且包含4个以上的项。但我不明白您在编写self.editProductType(self.productType()[2])时是什么意思;这个值是多少。在我的选择列表中将有4条记录,我将第4条记录设置为默认的selectedit的项目索引。在本例中:self.editProductType(self.productType()[3]);好的,我也这么做了,它工作了,但我们可以设置来自数据库的值。例如,选择列表将加载值1、2、3和4,列名为Id。我们可以设置Id=4吗?
self.editProductType(self.productType()[2]);