Knockout下拉列表初始值

时间:2015-06-01 19:10:40

标签: knockout.js knockout-2.0

我正在尝试在按钮点击事件上设置下拉列表的初始值。但它没有选择项目。



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

2 个答案:

答案 0 :(得分:1)

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

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

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

内在this不是你想象的那样。如果你看一下附加的jsfiddle,你会看到我结合了@dotnetom所做的事情,而且我使用了一个self对象来让你的闭包正常工作。

答案 1 :(得分:0)

声明

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

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

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