【问题标题】:radio buttons not set from viewmodel (knockoutjs)未从视图模型(knockoutjs)设置单选按钮
【发布时间】:2013-09-08 04:13:55
【问题描述】:

我已经建立了一个页面,其中有单选按钮控制使用 ko 设置的内容。到目前为止,一切都运行良好,但由于某种奇怪的原因(可能是我团队中某人的更新),控件无法正常工作。 为了找到错误,我使用了 knockoutjs 页面中的相同示例以简化操作。 布局:

<div >
    <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: $root.spamFlavor" /> Cherry</div>
     <div><input type="radio" name="flavorGroup" value="almond" data-bind="checked: $root.spamFlavor" /> Almond</div>
     <div><input type="radio" name="flavorGroup" value="msg" data-bind="checked: $root.spamFlavor" /> Monosodium Glutamate</div>
</div>
<small data-bind="text: $root.spamFlavor"></small> @*this work fine*@

和我的视图模型:

export var spamFlavor = ko.observable("almond");

如您所见,单选按钮应该获得值“almond”,但事实并非如此。检查我的视图模型(在打字稿中)的方法与我的视图一起工作是在控件中查看正常工作的内容。

目前我们使用的是 knockout-2.3.0。知道我做错了什么吗?

【问题讨论】:

  • 奇怪,我也遇到了同样的问题。

标签: javascript knockout-2.0 single-page-application


【解决方案1】:

让我想到的第一件事是,您并没有评估您的“已检查”陈述是真是假,这就是选择您的收音机所需要的。

尝试data-bind="checked: $root.spamFlavor() == 'almond'",它将评估真/假

【讨论】:

    【解决方案2】:

    尝试将淘汰赛库从 2.3.0 更改为 3.0.0。似乎有一个处理单选按钮的错误。试试这个 http://jsfiddle.net/qACa6/1/ 和 jsfiddle 例子

    <div data-bind="foreach: items">
        <input type="radio" name="group"
               data-bind="checkedValue: $data, checked: $root.selectedItem" />
        <span data-bind="text: foo"></span>
    </div>
    <div data-bind="text: ko.toJSON(selectedItem)" />
    

    带有javascript部分

    var ViewModel = function () {
      this.items = ko.observableArray();
      this.selectedItem = ko.observable();   
    
      var object1 = {foo: 1, anotherValue: ko.observable(1)}
      var object2 = {foo: 2, anotherValue: ko.observable(2)}
    
      this.items.push(object1);
      this.items.push(object2);
    
      this.selectedItem(object2);
    
    };
    
    var vm = new ViewModel();
    ko.applyBindings(vm);
    

    它不完全是你的代码,但看起来,这个问题是一样的。只需更改淘汰库的版本...

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2015-03-22
      • 2014-09-20
      • 1970-01-01
      相关资源
      最近更新 更多