敲除下拉列表初始值

Knockout Dropdown list Initial Value

我试图在按钮单击事件中设置下拉列表的初始值。但是它没有选择项目。

var viewModel = function () {
    this.itemsSingle = ko.observableArray([
       { id: 1, name: "Apple" }, 
       { id: 2, name: "Orange"},
       { id: 3, name: "Banana"}
   ]);
   this.selected = ko.observableArray();
   this.selectedSingle = ko.observable();
    this.Change = function(){        
        this.selectedSingle({ id: 3, name: "Banana"});
    };
};

var vm = new viewModel();
ko.applyBindings(vm);

JsFiddle code

声明

this.selectedSingle({ id: 3, name: "Banana"});

创建一个与列表中的对象不同的新对象。如果你想设置一个值,你需要提供与你的集合中相同的对象。您可以使用这样的代码将值设置为 Banana:

this.selectedSingle(this.itemsSingle()[2]);

除了@dotnetom 提到的之外,您的点击处理程序中的 this 也存在范围问题:

http://jsfiddle.net/47Lpd42w/6/

this.Change = function(){        
    this.selectedSingle({ id: 3, name: "Banana"});
};

内在this不是你想的那样。如果您查看附带的 jsfiddle,您会看到我结合了@dotnetom 所做的,另外我使用了一个 self 对象来让您的闭包正常工作。