KnockoutJS如何以编程方式设置下拉列表中的值

时间:2014-10-25 01:02:53

标签: knockout.js

我在jsfiddle的教程中分叉了KnockoutJS购物车编辑器示例并且只更改了

self.category = ko.observable(); 

self.category = ko.observable('Planes');

为什么我无法以编程方式将“类别”下拉列表的值设置为默认为“平面”?我以为你可以设置这个值,ko绑定会自动用新值刷新下拉列表吗?它没有响应,因为它订阅了或者我是否需要以不同的方式设置它?

- 史蒂夫

1 个答案:

答案 0 :(得分:1)

它不受字符串集合的约束。由于绑定的这一部分,它恰好显示为字符串:optionsText: "name"。要设置它绑定到哪个值,需要将其设置为对象本身。

对象本身位于一个名为sampleProductCategories的数组中,相当容易引起混淆,实际上是包含在该小提琴中的一个单独文件中:

http://knockoutjs.com/examples/resources/sampleProductCategories.js

因此,要将其设置为平面,您需要将其设置为该数组中的对象:

self.category = ko.observable(sampleProductCategories[2]);

恰好是第三个条目。

http://jsfiddle.net/o38pzw18/4/

当然,如果您不想手动查找每个项目的索引,可以执行以下操作:

var planes = sampleProductCategories.filter(function(item) {
    return item.name = "Planes";
})[0];
self.category = ko.observable(planes);