我在jsfiddle的教程中分叉了KnockoutJS购物车编辑器示例并且只更改了
self.category = ko.observable();
到
self.category = ko.observable('Planes');
为什么我无法以编程方式将“类别”下拉列表的值设置为默认为“平面”?我以为你可以设置这个值,ko绑定会自动用新值刷新下拉列表吗?它没有响应,因为它订阅了或者我是否需要以不同的方式设置它?
- 史蒂夫
答案 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);