【问题标题】:Knockout Dropdown list Initial Value淘汰赛下拉列表初始值
【发布时间】:2015-08-15 09:01:33
【问题描述】:

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

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

【问题讨论】:

  • 您好,我仍然在选择项目时遇到问题。我已经在 jsfiddle [链接](jsfiddle.net/balain/47Lpd42w/4) 中发布了代码。谢谢您的帮助。 – balaG 2 分钟前编辑

标签: knockout.js knockout-2.0


【解决方案1】:

声明

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

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

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

【讨论】:

  • 您好,我仍然在选择项目时遇到问题。我已经在 jsfiddle [链接] (jsfiddle.net/balain/47Lpd42w/4) 中发布了代码。感谢您的帮助。
【解决方案2】:

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

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

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

内心的this不是你想的那样。如果您查看随附的 jsfiddle,您会发现我结合了 @dotnetom 所做的事情,另外我还使用了 self 对象来让您的闭包正常工作。

【讨论】:

  • 如果您在绑定中使用 optionsCaption: 'Choose a fruit' 则此解决方案不起作用。你能检查一下这个[链接] (jsfiddle.net/balain/47Lpd42w/4)
  • 您仍在错误地使用this。此外,当selectedSingle 尚未设置时,您尝试显示selectedSingle().name。我在您的代码中添加了一个空检查。见jsfiddle.net/47Lpd42w/11
  • 谢谢 [link] (http://jsfiddle.net/47Lpd42w/11) 的作品。是的,我错过了空检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 2015-11-05
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2013-02-14
相关资源
最近更新 更多